如何在Scrapy中"暂停"蜘蛛?

Kur*_*eek 5 python scrapy

我正在使用Tor(通过Privoxy)进行抓取项目,并想写一个Scrapy扩展(参见https://doc.scrapy.org/en/latest/topics/extensions.html),它要求一个新的身份(参见https://stem.torproject.org/faq.html#how-do-i-request-a-new-identity-from-tor)每当刮取一定数量的物品时.

然而,身份的改变需要一些时间(几秒钟),在此期间,我希望没有任何东西可以被删除.因此,我想让扩展"暂停"蜘蛛直到IP更改完成.

这可能吗?(我已经阅读了一些关于使用Cntrl + C并指定a的解决方案JOBDIR,但这看起来有点激烈,因为我只想暂停蜘蛛,而不是停止整个引擎).

miz*_*gun 5

履带式发动机拥有pauseunpause方法,所以你可以尝试这样的事情:

class SomeExtension(object):

   @classmethod
   def from_crawler(cls, crawler)
       o = cls(...)
       o.crawler = crawler
       return o

   def change_tor(self):
       self.crawler.engine.pause()
       # some python code implements changing logic
       self.crawler.engine.unpause()
Run Code Online (Sandbox Code Playgroud)