我有一个名为algorithm.py的脚本,我希望能够在脚本过程中调用Scrapy蜘蛛。文件结构为:

algorithm.py
MySpiders/

MySpiders是一个包含多个抓取项目的文件夹。我想创建方法perform_spider1(),perform_spider2()...可以在algorithm.py中调用。

如何构造此方法?

我设法使用以下代码调用了一个蜘蛛,但是,这不是一种方法,它仅适用于一个蜘蛛。我是需要帮助的初学者!

import sys,os.path
sys.path.append('path to spider1/spider1')
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log, signals
from scrapy.xlib.pydispatch import dispatcher
from spider1.spiders.spider1_spider import Spider1Spider

def stop_reactor():
    reactor.stop()

dispatcher.connect(stop_reactor, signal=signals.spider_closed)

spider = RaListSpider()
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
log.msg('Running reactor...')
reactor.run() # the script will block here
log.msg('Reactor stopped.')

最佳答案

只需检查蜘蛛并通过调用configurecrawlstart进行设置,然后再调用log.start()reactor.run()即可。而且scrapy将在同一过程中运行多个蜘蛛。

有关更多信息,请参见documentationthis thread

另外,请考虑通过scrapyd运行蜘蛛。

希望能有所帮助。

关于python - 如何从另一个Python脚本调用特定的Scrapy蜘蛛,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16994768/

10-13 01:29