gpt4 book ai didi

python - 如何在Scrapy中使用下载器中间件

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:52 25 4
gpt4 key购买 nike

我正在使用 scrapy 来抓取一些网页。我编写了自定义的 ProxyMiddleware 类,其中我在 process_request(self,request,spider) 方法中实现了我的要求。这是我的代码(已复制):

class ProxyMiddleware(scrapy.downloadermiddlewares.httpproxy):
def __init__(self, proxy_ip=''):
self.proxy_ip = proxy_ip

def process_request(self,request,spider):
ip = random.choice(self.proxy_list)
if ip:
request.meta['proxy'] = ip
return request

proxy_list = [list of proxies]

现在,我不明白 scrapy 会如何考虑我的实现而不是默认类。经过一些搜索和头脑 Storm ,我的理解是,我需要在 settings.py 中进行更改

DOWNLOADER_MIDDLEWARES = {
'IPProxy.middlewares.MyCustomDownloaderMiddleware': 543,
'IPProxy.IPProxy.spiders.RandomProxy': 600
}

为了让读者更好地理解我的项目结构,我在列表中添加了第二个具有一些随机值的元素。我的项目结构是:

enter image description here

我的问题是,

  • 如何在settings.py中正确使用DOWNLOADER_MIDDLEWARES
  • 如何为 DOWNLOADER_MIDDLEWARES 中的元素赋值
  • 如何让 scrapy 调用我自定义的代码而不是默认的

最佳答案

如果您想禁用内置的 HttpProxyMiddleware 下载器中间件 - 将其在 DOWNLOADER_MIDDLEWARES 中的值设置为 None:

DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': None,
'IPProxy.middlewares.MyCustomDownloaderMiddleware': 543,
'IPProxy.IPProxy.spiders.RandomProxy': 600
}

关于python - 如何在Scrapy中使用下载器中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com