scrapy框架修改下载器中间件,添加IP代理池
IP代理池:
- 作用:尽可能多的将scrapy工程中的请求的IP设置成不同的。
- 操作流程:
1.在下载中间件中拦截请求
2.将拦截到的请求的IP修改成某一代理IP
3.在配置文件中开启下载中间件
View Code然后在settings.py中,将下载器中间件打开:
DOWNLOADER_MIDDLEWARES = {
'ip_check.middlewares.IpCheckDownloaderMiddleware': 543,
}
这里中间件的优先度一定要小于框架默认值750(值越小,优先度越高)。
经过如上的配置,scrapy框架现在已经可以启用IP和UA代理池了,我们只需要找到足够多,并且可用的高匿IP,添加进代理池,然后就可以实现基本的IP代理了。
-验证成果:
这里分享一个查询ip地址的网址:
http://icanhazip.com/
直接访问就可以显示出我们当前的IP。
我在spider中重写了request,检验了10次访问的结果。
import scrapy
import scrapy.cmdline
class IpspiderSpider(scrapy.Spider):
name = 'ipspider'
start_urls = ['http://icanhazip.com/']
def start_requests(self):
for i in range (1,10):
url = 'http://icanhazip.com/'
yield scrapy.Request(url,dont_filter=True,callback=self.parse)
def parse(self, response):
print(response.text)
def main():
scrapy.cmdline.execute(['scrapy','crawl','ipspider'])
main()

我的ip池只有5组IP,所以重复度较高。
(以上内容有部分借鉴与别人的文章,仅用于学习途径,侵权必删)

浙公网安备 33010602011771号