Scrapy:从python脚本运行一个蜘蛛并等待它直到执行结束

时间:2017-05-11 22:09:40

标签: python django scrapy scrapy-spider

我创建了一个具有以下结构的小型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视图

1 个答案:

答案 0 :(得分:2)

您可以在 scrapy docs

中的这个非常好的解释中找到一半解决方案

但是,这是解决方案中更重要的一半,从未直接从django视图中运行刮刀(也不是来自其他一些Web框架)。

请,我经常看到这种方式,这样做会阻止您的网络应用。因此,您的视图将遇到浏览器超时,并且在某些时候您的应用将无法处理其他请求。

干净的解决方案这里是使用运行刮刀的后台进程。一个很好的库是celery,这个主题已经在这里详细讨论过:Running Scrapy spiders in a Celery task