我创建了一个具有以下结构的小型Scrapy
项目:
scrapyProject/
├── scrapy.cfg
└── scrapyProject
├── __init__.py
├── items.py
├── pipelines.py
├── settings.py
└── spiders
├── crawl_products.py
└── __init__.py
crawl_products.py
包含蜘蛛products_spider
。要启动我正在使用的蜘蛛:
scrapy crawl products_spider
现在我希望从另一个python脚本启动蜘蛛并等到执行结束。
如果能帮助:我想要运行蜘蛛的另一个脚本是django
视图
答案 0 :(得分:2)
您可以在 scrapy docs
中的这个非常好的解释中找到一半解决方案但是,这是解决方案中更重要的一半,从未直接从django视图中运行刮刀(也不是来自其他一些Web框架)。
请,我经常看到这种方式,这样做会阻止您的网络应用。因此,您的视图将遇到浏览器超时,并且在某些时候您的应用将无法处理其他请求。
干净的解决方案这里是使用运行刮刀的后台进程。一个很好的库是celery
,这个主题已经在这里详细讨论过:Running Scrapy spiders in a Celery task