gpt4 book ai didi

python - Scrapy如何使用代理池

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:08 34 4
gpt4 key购买 nike

我正在使用 Scrapy 并尝试通过创建自定义 DownloaderMiddleware 来使用代理池。我遇到了一些麻烦,想在这里得到一些帮助(我看了 Scrapy 网站上的文档,但是没有代码示例)

我的 python 代码是:

import random

class ProxyRotator(object):
proxy_pool = ['ip1...', 'ip2...', 'ip3...']

def process_request(self, request, spider):
request.meta['proxy'] = "http://" + self.proxy_pool[random.randint(0, len(self.proxy_pool) - 1)] + ":80"
return request

在 settings.py 中,我添加了

 DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
'pricecheck_crawler.ProxyMiddleware.ProxyRotator': 100,
}

现在爬虫没有从网站上得到任何东西。日志显示:

2016-02-17 11:27:50 [scrapy] 信息:抓取 0 页(0 页/分钟),抓取 0 项(0 项/分钟)

2016-02-17 11:27:50 [scrapy] 调试:Telnet 控制台监听 127.0.0.1:6051

2016-02-17 11:28:50 [scrapy] 信息:抓取 0 页(0 页/分钟),抓取 0 项(0 项/分钟)

2016-02-17 11:29:50 [scrapy] 信息:抓取 0 页(0 页/分钟),抓取 0 项(0 项/分钟)

最佳答案

试试这个。删除 return request 语句,因为它会将请求返回给 process_request,并且永远不会调用 process_response。在此之前确保您只使用 http 或 https 代理:

def process_request(self, request, spider):
request.meta['proxy'] = self.proxy_pool[random.randint(0, len(self.proxy_pool) - 1)]

您还可以将设置更改为如下内容:

'pricecheck_crawler.ProxyMiddleware.ProxyRotator': 100,
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110

同时验证 request.meta['proxy'] = "http://ip:port"

关于python - Scrapy如何使用代理池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35464705/

34 4 0
文章推荐: html - 你能用 "display: inline"覆盖内部
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com