我有一个scrapy蜘蛛,但它有时不返回请求。Scrapy:如何调试scrapy丢失请求
我发现通过在产生请求之前和获得响应之后添加日志消息。
蜘蛛已遍历页面和解析每个页面上的项目报废链接。
下面是部分代码
SampleSpider(BaseSpider):
....
def parse_page(self, response):
...
request = Request(target_link, callback=self.parse_item_general)
request.meta['date_updated'] = date_updated
self.log('parse_item_general_send {url}'.format(url=request.url), level=log.INFO)
yield request
def parse_item_general(self, response):
self.log('parse_item_general_recv {url}'.format(url=response.url), level=log.INFO)
sel = Selector(response)
...
我比较每个日志信息的数量和“parse_item_general_send”比“parse_item_general_recv”
有没有在最后的统计信息没有400或500个错误,所有的回复状态代码只有200个。看起来请求只是消失。
我还添加了这些参数,以尽量减少可能出现的错误:
CONCURRENT_REQUESTS_PER_DOMAIN = 1
DOWNLOAD_DELAY = 0.8
由于扭曲的异步性,我不知道如何调试这个错误。 我发现一个类似的问题:Python Scrapy not always downloading data from website,却一直没有任何回应
尝试禁用异地中间件以查看会发生什么。 – Rolando
我试过了(根据[这个例子](http://doc.scrapy.org/en/latest/topics/spider-middleware.html)),nothig已经改变了,有些请求消失了,从2到5大约120个请求总是消失 –
您可以提供一个重现此问题的最小示例吗?否则将很难指出有什么问题,因为这不是一个常见问题 – Rolando