Scrapy爬虫代理中间件的使用

构建代理池

首先,使用GitHub上的开源项目ProxyPool在服务器上构建代理池

在Scrapy爬虫的middlewares.py中添加代理中间件

class RandomProxyMiddleware(object):

    def process_exception(self, request, exception, spider):
        headers = {'Connection': 'close'}
        proxy_ip = json.loads(requests.get(PROXY_POOL_URL, headers=headers).text).get('proxy')

        print("当前使用IP是:" + proxy_ip)
        request.meta["proxy"] = 'http://' + proxy_ip
        return request


Process_exception这个函数的作用是在程序出现异常时,为发生异常的请求添加代理,并将请求重新放入请求队列中

在settings.py中启动启用代理中间件

DOWNLOADER_MIDDLEWARES = {
  	# 随机用户头
    'Crawler.middlewares.RandomUserAgentMiddlware': 543,
    # 随机代理
    'Crawler.middlewares.RandomProxyMiddleware': 600,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
}

重新启动爬虫

scrapy crawl ...
posted @ 2021-01-29 19:37  VanGy  阅读(228)  评论(0编辑  收藏  举报