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

Python 如何在Scrapy中有条件地重试并重新刷新当前页面?,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我对Scrapy还不熟悉,对Python也不太熟悉。我已经设置了一个刮板来从网站上刮取数据,但是尽管我使用的是代理,但是如果同一个代理被使用太多次,那么我的请求会显示一个页面,告诉我访问太多页面太快(HTTP状态代码200) 正如我的scraper所看到的,页面的状态代码是正确的,它没有找到所需的数据并转到下一页 我可以通过HtmlXPathSelector确定何时显示这些页面,但如何向Scrapy发出重试该页面的信号?Scrapy内置了一个。您可以将其子类化并覆盖该方法,以包含一个检查,查看是

我对Scrapy还不熟悉,对Python也不太熟悉。我已经设置了一个刮板来从网站上刮取数据,但是尽管我使用的是代理,但是如果同一个代理被使用太多次,那么我的请求会显示一个页面,告诉我访问太多页面太快(HTTP状态代码200)

正如我的scraper所看到的,页面的状态代码是正确的,它没有找到所需的数据并转到下一页


我可以通过HtmlXPathSelector确定何时显示这些页面,但如何向Scrapy发出重试该页面的信号?

Scrapy内置了一个。您可以将其子类化并覆盖该方法,以包含一个检查,查看是否显示了告诉您访问太多页面太快的页面

谢谢。我整晚都在试着看它是如何完成的,但却不知道如何覆盖上面提到的方法?到目前为止,我已经添加了一个带有
process\u response
方法的
RetryMiddleware(object)
类,并从我的设置中引用了它,但是在上面的类中找不到
self.retry\u http\u codes
。我是否需要将
object
更改为上面的其他内容?@john继承是另一个问题,继承后您应该调用原始的
Retry
classes方法,您还必须注册新的重试中间件,scrapy expalins如何在docsI中实现这一点也有过尝试,但找不到正确的类传递给它。例如,我创建了一个类:
RetryMiddlewareSubclass(RetryMiddleware)
,但它告诉我RetryMiddleware没有定义,我尝试了一些不同的组合,但没有一个可以找到。一旦我弄清楚该通过什么课程,我就应该没事了。。。还是我完全偏离了方向?@john你说得对,你必须导入
RetryMiddleware
<代码>来自scrapy.contrib.downloadermiddleware.retry import RetryMiddleware<代码>RetryMiddlewareSubclass(RetryMiddleware)