如何在Scrapy中有条件地重试并重新抓取当前页面?
我刚开始学习Scrapy,对Python也不太熟悉。我已经设置了一个爬虫来从网站上抓取数据,但即使我在使用代理,如果同一个代理用得太多次,我的请求就会被网站限制,显示一个页面告诉我访问得太快了(HTTP状态码200)。
因为我的爬虫把这个页面的状态码当作正常,所以它没有找到需要的数据,就直接跳到下一个页面了。
我可以通过HtmlXPathSelector来判断这些页面何时出现,但我该怎么告诉Scrapy去重试那个页面呢?
1 个回答
3
Scrapy自带了一个叫做 retry
中间件。你可以创建一个它的子类,并重写 process_response
这个方法,来检查是否出现了那种提示你访问页面太快的警告页面。