我有一个 scrapy 蜘蛛,但有时它不返回请求。
我发现通过在产生请求之前和获得响应之后添加日志消息。
Spider 可以迭代页面并解析每个页面上的项目废弃的链接。
这是代码的一部分
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
由于twisted的异步特性,我不知道如何调试这个错误。
我发现了一个类似的问题:Python Scrapy并不总是从网站下载数据 https://stackoverflow.com/questions/20289450/python-scrapy-not-always-downloading-data-from-website,但没有任何反应