Python 3.x 将从_crawler方法添加到scrapy.xlib.pydispatch脚本
如果你发现这个问题研究得很好并且对你有用,一定要投赞成票。其他人也应该有同样的机会找到有用的帖子 不久前在windows上使用python编写的scrapy spider时,我就有了这段功能代码,现在使用scrapy crawl时看起来是这样的 ScrapyPreactionWarning:不推荐从scrapy.xlib.pydispatch导入,并且在将来的scrapy版本中将不再支持>。如果您只想连接>信号,请使用from_crawler类方法,否则,如果>需要,请直接导入pydispatch。请参阅:from>scrapy.xlib.pydispatch导入调度程序 我查看了他们的github论坛页面以获得解释,然后用PyDispatcher 2.0.5替换了这个包,返回的结果是该包不在我的conda环境中(它是),但是他们提到添加from_crawler方法作为问题的解决方案。我不知道怎么做 在第三条评论中,他们这样说 @类方法 来自_爬虫程序的def(cls、爬虫程序、*args、**kwargs): spider=super(MySpider,cls)。来自_crawler(crawler,*args,**kwargs) 爬虫。信号。连接(spider.spider\u打开,信号。spider\u打开) 回程卡盘 正如Luiz和tomjn所建议的,信号似乎是交替运行此脚本的解决方案。但是,self在整个脚本中使用,def spider_closed用于这里的操作,我不确定如何将其更改为使用from_crawler方法Python 3.x 将从_crawler方法添加到scrapy.xlib.pydispatch脚本,python-3.x,selenium,scrapy,Python 3.x,Selenium,Scrapy,如果你发现这个问题研究得很好并且对你有用,一定要投赞成票。其他人也应该有同样的机会找到有用的帖子 不久前在windows上使用python编写的scrapy spider时,我就有了这段功能代码,现在使用scrapy crawl时看起来是这样的 ScrapyPreactionWarning:不推荐从scrapy.xlib.pydispatch导入,并且在将来的scrapy版本中将不再支持>。如果您只想连接>信号,请使用from_crawler类方法,否则,如果>需要,请直接导入pydispatc
def spider_closed(self, spider):
sql = "DELETE FROM images WHERE EventDate < NOW() - INTERVAL 3 DAY"
self.cursor.execute(sql)
sql = "DELETE FROM dialy_items WHERE EventDate < NOW() - INTERVAL 3 DAY"
self.cursor.execute(sql)
self.cnx.commit()
self.cursor.close()
self.cnx.close()
def spider_关闭(自身,spider):
sql=“从EventDate
解决方案是使用内置来完成您正在使用pydispatch
执行的操作。例如,将\uuuu init\uuuu
方法替换为来自爬虫的:
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = super(GetdataSpider, cls).from_crawler(crawler, *args, **kwargs)
crawler.signals.connect(spider.spider_closed, signals.spider_closed)
return spider
你的spider中真的有一个叫做self.spider\u closed
的方法吗?如果没有,您真的不需要连接任何信号,因为Scrapy已经将spider\u closed
信号连接到默认的spider\u closed
方法。事实上,根据您显示的代码,不需要\uuuu init\uuuuu
、crawler
的和pydispatch
。我想他们已经找到了您想要的答案。如果这没有用,请告诉我。这似乎也是路易斯在回答中所写的,用信号代替这些方法。这应该是一个答案,但我不确定如何将其附加到我的脚本中。我认为您应该用@Luiz.that done给出的代码替换\uuuu init\uuuu
函数。请查看上面的帖子。非常感谢您的回复,当您致力于找到解决方案时,请更新此帖子?是的,稍后脚本将使用自我,请参阅update@EmpireLearning你试着采纳我的建议了吗?更改我提到的内容时,您是否遇到了错误?是的,我在代码中使用了建议,运行了文件,但什么也没发生,没有错误,但程序没有执行。它应该打开,也应该用信息填充数据库(这是我的测试)
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = super(GetdataSpider, cls).from_crawler(crawler, *args, **kwargs)
crawler.signals.connect(spider.spider_closed, signals.spider_closed)
return spider