垃圾中间件“NoneType”不是iterab

2024-04-18 23:01:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用一个中间件与scrapy,所以在我的项目“Tutorial”中,我做了以下工作:

在设置文件中我添加:

DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
'tutorial.middlewares.ProxyMiddleware': 100,
}

并创建一个名为中间件.py包含以下内容:

^{pr2}$

当我试图在shell中运行项目时

scrapy shell http://google.com

我得到以下错误:

file "/usr/local/lib/python2.7/dist-packages/twisted/internet/threads.py", line 122, in blockingCallFromThread
    result.raiseException()
  File "<string>", line 2, in raiseException
TypeError: argument of type 'NoneType' is not iterable

Tags: 中间件文件项目inpylinedownloadershell
1条回答
网友
1楼 · 发布于 2024-04-18 23:01:08

根据documentation

process_request() should either: return None, return a Response object, return a Request object, or raise IgnoreRequest.

您没有从自定义中间件的process_request()方法返回:

class ProxyMiddleware(object):
    def process_request(self, request, spider):
        request.meta['proxy'] = "39.179.187.48:8123"
        return request

这里返回request,假设您想用proxy集重新安排请求。在

相关问题 更多 >