我有scrapy的問題。 請求失敗(例如404,500),如何請求另一個替代請求?如兩個環節可以獲得價格信息,一個失敗,自動請求另一個。Scrapy:請求失敗(例如404,500),如何請求另一個替代請求?
3
A
回答
12
使用「errback可」像 errback=self.error_handler
的請求,其中error_handler是一個函數(就像回調函數)在此功能檢查錯誤代碼,使替代請求。
看到scrapy文檔中errback可: http://doc.scrapy.org/en/latest/topics/request-response.html
+0
謝謝,我已經自己解決了這個問題,正如你所說的。 –
6
只需設置handle_httpstatus_list = [404, 500]
並檢查parse
方法中的狀態碼。這裏有一個例子:
from scrapy.http import Request
from scrapy.spider import BaseSpider
class MySpider(BaseSpider):
handle_httpstatus_list = [404, 500]
name = "my_crawler"
start_urls = ["http://github.com/illegal_username"]
def parse(self, response):
if response.status in self.handle_httpstatus_list:
return Request(url="https://github.com/kennethreitz/", callback=self.after_404)
def after_404(self, response):
print response.url
# parse the page and extract items
另見:
- How to get the scrapy failure URLs?
- Scrapy and response status code: how to check against it?
- How to retry for 404 link not found in scrapy?
希望有所幫助。
+0
這不包括總失敗,例如DNS - 只有當網絡服務器響應時 – HaveAGuess
相關問題
- 1. Scrapy:如何調試scrapy丟失請求
- 2. PHP如何失敗請求
- 3. Ajax請求失敗
- 4. SVN:PROPFIND請求失敗
- 5. Ajax請求失敗
- 6. 請求失敗「JSON」
- 7. HTTP請求失敗,
- 8. 請求失敗(401)
- 9. Git:HTTP請求失敗
- 10. AdMob請求失敗
- 11. System.Security.SecurityException:請求失敗
- 12. Liboauth請求失敗
- 13. FileIOPermisson請求失敗
- 14. git:HTTP請求失敗?
- 15. MooTools請求失敗
- 16. 基於第一個AJAX請求調用另一個jQuery/AJAX/PHP請求失敗
- 17. ASIHTTPRequest如何識別完成的請求和失敗的請求?
- 18. Scrapy收率請求到另一個
- 19. 如何將請求響應傳遞給另一個請求?
- 20. 如何阻止Ajax請求存在另一個請求
- 21. 如何在另一個Alamofire請求中運行Alamofire請求?
- 22. 節點請求模塊 - 示例請求失敗
- 23. 「RA層請求失敗:REPORT請求失敗」中的git - svn的
- 24. 內部請求失敗導致父請求失敗
- 25. Alamofire請求總是失敗,如果Socket.io連接「請求超時」
- 26. 如何在scrapy中提出請求之前更改請求url?
- 27. Zuul代理向另一個端口請求相同的請求
- 28. Scrapy延遲請求
- 29. jQuery何時/然後/失敗併發ajax請求:哪個請求失敗?
- 30. Admob:第一次請求失敗時再次加載請求?
你可以寫一箇中間件。 – kev