在Scrapy框架中使用代理IP的要点是什么?针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的小伙伴找到更简单易行的方法。
Scrapy框架通过模块化设计实现了数据采集的通用功能接口,并提供自定义扩展。它将程序员从繁琐的基于流程的重复工作中解放出来,为程序员提供了灵活简单的基础设施。对于普通的网页数据采集,程序员只需要专注于网站数据分析和网站防爬策略分析。结合代理IP的使用,可以高效快速地启动项目。
主要特点包括:
1)参数化并发请求的数量,并自动和异步执行它们。
2)支持xpath,简洁高效。
3)支持定制中间件中间件。
4)支持收藏来源列表。
5)支持独立调试,方便shell模式。
6)支持数据管道接口的定义。用户可以选择文字、数据库等方式。
在scratch框架中使用代理有几种方法:
1.scrapy中间件
创建一个新的middlewares.py文件(。/project name/middleware . py),内容如下:
#!-*- encoding:utf-8 -*-
importbase64
importsys
导入随机
PY3=sys.version_info[0]=3
defbase 64 ify(bytes _ or _ str):
ifpy3 ndisininstance(bytes _ or _ str,str):
input _ bytes=bytes _ or _ str . encode(' utf8 ')
else:
输入字节=字节或字符串
output _ bytes=base64 . URL safe _ b64 encode(input _ bytes)
ifPY3:
returnoutput _ bytes . decode(' ascii ')
else:
返回输出字节数
classProxyMiddleware(对象):
defprocess_request(自我、请求、蜘蛛):
#代理服务器(产品官网www.16yun.cn)。
proxyHost='t.16yun.cn '
proxyPort='31111 '
#代理身份验证信息
代理用户='用户名'
proxyPass='密码'
request . meta[' proxy ']=' http://{ 0 } : { 1 } '。格式(代理服务器、代理端口)
#添加身份验证标头。
encoded _ user _ pass=base64 ify(proxy user ' : ' proxy pass)
request . header[' Proxy-Authorization ']=' Basic ' encoded _ user _ pass
#设置IP交换机报头(根据需要)。
隧道=random.randint(1,10000)
request . header[' Proxy-Tunnel ']=str(Tunnel)
修改项目配置文件(。/项目名称/settings.py)。
DOWNLOADER _ MIDDLEWARES={
项目名称。中间件:代理中间件' :100,
}
2.scrapy环境变量
通过设置环境变量来使用爬网程序代理(窗口)。
c : \ set http _ proxy=http://username : password @ IP : port
关于在Scrapy框架中使用代理IP的关键点是什么的答案,我希望在这里分享。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/54429.html