HTTP就相当于一个传输机制,在甲方和乙方的中间传输自己想要的一种数据。
怎么在python中使用爬虫代理。http代理是爬虫研发中不可缺少的一部分。假如需要大量采集互联网网站上的数据,长时间访问必定网站会出现反爬。为了避免出现这种问题,一般需要把请求分配到其他不同的爬虫程序上。
由于部分公司为了降低成本,就会再互联网网站上采集一些免费的肉鸡代理IP或者购买付费代理去进行采集。
互联网上的免费代理,大家网上随便搜索都能出来一大批,至于网上的免费代理的安全性和可用性,一般的爬虫研发一测试就知道好与坏。假如数据采集中 有部分内容包含 需要登录等的话 还是不要用网上的免费IP。可以自己搭建一个IP池或者购买亿牛云的付费代理
python爬虫使用http代理:
#! -*- encoding:utf-8 -*-
import base64
import sys
import random
PY3 = sys.version_info[0] >= 3
def base64ify(bytes_or_str):
if PY3 and isinstance(bytes_or_str, str):
input_bytes = bytes_or_str.encode('utf8')
else:
input_bytes = bytes_or_str
output_bytes = base64.urlsafe_b64encode(input_bytes)
if PY3:
return output_bytes.decode('ascii')
else:
return output_bytes
class ProxyMiddleware(object):
def process_request(self, request, spider):
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "username"
proxyPass = "password"
request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
# 添加验证头
encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
# 设置IP切换头(根据需求)
tunnel = random.randint(1,10000)
request.headers['Proxy-Tunnel'] = str(tunnel)
总结:无论是什么爬虫,在爬虫过程中http代理很重要。当然如果要高效安全稳定的采集数据,还是需要在网上购买一些付费的亿牛云高匿爬虫代理。
有疑问加站长微信联系(非本文作者)