Fork me on github

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,所以重复度较高。

(以上内容有部分借鉴与别人的文章,仅用于学习途径,侵权必删)

 

posted @ 2020-04-13 15:57  Debug_Man  阅读(490)  评论(0)    收藏  举报
Live2D