gpt4 book ai didi

command-line - Scrapy cmdline.execute 停止脚本

转载 作者:行者123 更新时间:2023-12-04 04:39:44 40 4
gpt4 key购买 nike

当我打电话

cmdline.execute("scrapy crawl website".split())
print "Hello World"

它在 cmdline.execute 之后停止脚本,并且不运行脚本的其余部分并打印“Hello World”。我该如何解决这个问题?

最佳答案

通过查看 Scrapy 的 cmdline.py 中的 execute 函数,您会看到最后一行是:

sys.exit(cmd.exitcode)

如果您直接调用 execute 函数,则确实没有办法绕过此 sys.exit 调用,至少在不更改它的情况下是这样。猴子修补是一种选择,尽管不是一个好选择!更好的选择是避免完全调用 execute 函数,而是使用下面的自定义函数:

from twisted.internet import reactor

from scrapy import log, signals
from scrapy.crawler import Crawler as ScrapyCrawler
from scrapy.settings import Settings
from scrapy.xlib.pydispatch import dispatcher
from scrapy.utils.project import get_project_settings

def scrapy_crawl(name):

def stop_reactor():
reactor.stop()

dispatcher.connect(stop_reactor, signal=signals.spider_closed)
scrapy_settings = get_project_settings()
crawler = ScrapyCrawler(scrapy_settings)
crawler.configure()
spider = crawler.spiders.create(name)
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run()

你可以这样调用它:

scrapy_crawl("your_crawler_name")

关于command-line - Scrapy cmdline.execute 停止脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24875280/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com