今天这篇文章主要给大家介绍下Python基于scrapy采集数据时使用代理服务器的方法,涉及Python使用代理服务器的技巧,具有一定参考借鉴价值,需要的朋友可以参考下。
在我们访问任何网站之前,都需要对网站进行分析,最主要的是分析网站的是否有反爬机制,因为反爬机制的严格与否对我们获取的速度和数量都有一定的影响。在应对反爬机制的时候除了使用代理IP以外还有一个基本的随机ua的添加,做爬虫都应该对这个不陌生。在Python爬虫的过程中经常要模拟UserAgent, 因此自动生成UserAgent十分有用通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,这个也是对于Python反爬的一种策略。但是我们今天重点讲的是代理IP的使用,对那些反爬机制特别严的网站,大家肯定在找适合代理的时候很费精力,今天就给大家解决这个问题,推荐亿牛云代理,自营线路,电信专线IP池,代理速度,延迟都是一级棒。特别是需求高的业务,更是能满足需求。这里主要推荐他们家提供的爬虫代理隧道模式的,真的是yyds,关于使用方式,不同的语言使用有稍微的区别,这里给大家示例scrapy爬虫程序代理IP的实现过程:
Plain Text
复制代码
1
import base64
2
import sys
3
import random
4
5
PY3 = sys.version_info[0] >= 3
6
7
def base64ify(bytes_or_str):
8
if PY3 and isinstance(bytes_or_str, str):
9
input_bytes = bytes_or_str.encode('utf8')
10
else:
11
input_bytes = bytes_or_str
12
13
output_bytes = base64.urlsafe_b64encode(input_bytes)
14
if PY3:
15
return output_bytes.decode('ascii')
16
else:
17
return output_bytes
18
19
class ProxyMiddleware(object):
20
def process_request(self, request, spider):
21
# 代理服务器(产品官网 www.16yun.cn)
22
proxyHost = "t.16yun.cn"
23
proxyPort = "31111"
24
25
# 代理验证信息
26
proxyUser = "username"
27
proxyPass = "password"
28
29
request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
30
31
# 添加验证头
32
encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
33
request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
34
35
# 设置IP切换头(根据需求)
36
tunnel = random.randint(1,10000)
37
request.headers['Proxy-Tunnel'] = str(tunnel)
关于其他语言写的程序如何使用代理,大家可以去官网具体了解下:www.16yun.cn/help/ss_dem…以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流。
若有收获,就点个赞吧