pan*_*kaj 3 scrapy web-scraping
我对 Scrapy 比较陌生。我遇到了某些页面无法正确加载的情况。我想重试该任务两次以确保其正常工作。请注意,我没有收到 404 错误,但由于缺少某些元素,解析结果时失败。
这种情况仅发生在一百例中的少数,并且我无法重现它,因为下次重试时它会通过。(通过捕获整个响应正文进行验证)
处理这个问题的好方法是什么?
我尝试做
def parse(self, response):
try:
#do something
yield result
except:
yield Request(response.url, callback=self.parse)
Run Code Online (Sandbox Code Playgroud)
但我认为这些被 Scrapy 过滤并识别为重复项。解决这个问题的最佳方法是什么?
您应该使用errback
处理程序scrapy.Request
来代替。
这是示例:```
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(
url=url,
dont_filter=True,
callback=self.apply_filter,
errback=self.handle_failure)
def handle_failure(self, failure):
self.log(failure, level=logging.ERROR)
# try with a new proxy
self.log('restart from the failed url {}'.format(failure.request.url))
yield scrapy.Request(
url=failure.request.url,
callback=self.parse,
errback=self.handle_failure)
Run Code Online (Sandbox Code Playgroud)
````
归档时间: |
|
查看次数: |
4043 次 |
最近记录: |