Scrapy 和 Django 框架都是 Python 的独立最佳框架,可以用更少的代码构建爬虫和 Web 应用程序,尽管每当你想创建一个蜘蛛时,你总是必须生成新的代码文件并且必须编写相同的代码段(尽管有一些变化)。我试图将两者整合在一起。但是卡在我需要发送状态200_OK该蜘蛛成功运行的地方,同时蜘蛛继续运行,完成后将数据保存到数据库。
虽然我知道 API 已经可用于 scrapyd。但我想让它更通用。这使您无需写入多个文件即可创建爬虫。我认为Crawlrunner
https://docs.scrapy.org/en/latest/topics/practices.html 会对此有所帮助,因此也尝试一下 t 运行抓取程序的最简单方法,这样它就不会阻塞脚本 但它给了我错误,builtins.ValueError: signal only works in main thread
即使我从 Rest 框架中得到响应。但是由于此错误,爬虫无法运行,这是否意味着我需要切换到主线程? 我正在用一段简单的代码来做到这一点
spider = GeneralSpider(pk)
runner = CrawlerRunner()
d = runner.crawl(GeneralSpider, pk)
d.addBoth(lambda _: reactor.stop())
reactor.run()
我在django视图中运行了Scrapy Spider,并分享了我的代码。
settings_file_path = "scraping.settings" # Scrapy Project Setting
os.environ.setdefault('SCRAPY_SETTINGS_MODULE', settings_file_path)
settings = get_project_settings()
runner = CrawlerRunner(settings)
path = "/path/to/sample.py"
path = url.replace('.py', '')
path = url.replace('/', '.')
file_path = ".SampleSpider".format(path)
SampleSpider = locate(file_path)
d = runner.crawl(SampleSpider)
d.addBoth(lambda _: reactor.stop())
reactor.run()
我希望它对您有所帮助。