如何在Scrapy中有条件地重试并重新抓取当前页面?

3 投票
1 回答
2189 浏览
提问于 2025-04-17 20:10

我刚开始学习Scrapy,对Python也不太熟悉。我已经设置了一个爬虫来从网站上抓取数据,但即使我在使用代理,如果同一个代理用得太多次,我的请求就会被网站限制,显示一个页面告诉我访问得太快了(HTTP状态码200)。

因为我的爬虫把这个页面的状态码当作正常,所以它没有找到需要的数据,就直接跳到下一个页面了。

我可以通过HtmlXPathSelector来判断这些页面何时出现,但我该怎么告诉Scrapy去重试那个页面呢?

1 个回答

3

Scrapy自带了一个叫做 retry 中间件。你可以创建一个它的子类,并重写 process_response 这个方法,来检查是否出现了那种提示你访问页面太快的警告页面。

撰写回答