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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scrapy:从python脚本运行一个蜘蛛并等待它直到执行结束相关的知识,希望对你有一定的参考价值。

我用这种结构创建了一个小的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视图

答案

你可以在scrapy docs的这个非常好的解释中找到一半的解决方案

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

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

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

以上是关于Scrapy:从python脚本运行一个蜘蛛并等待它直到执行结束的主要内容,如果未能解决你的问题,请参考以下文章

如何让我可以用一只scrapy蜘蛛一致地绕过一系列网站?

从脚本运行scrapy,不包括管道

如何使用 PyCharm 调试 Scrapy 项目

在 Celery 任务中运行 Scrapy 蜘蛛

Scrapy - 如何启动同一个蜘蛛进程的多个实例?

使用 Amazon Web Services 自动安排 Scrapy Crawler