gpt4 book ai didi

python - 以受控方式运行数十个 Scrapy 蜘蛛

转载 作者:太空狗 更新时间:2023-10-30 00:31:02 27 4
gpt4 key购买 nike

我正在尝试构建一个系统来运行 a few dozen Scrapy spiders ,将结果保存到 S3,并在完成时通知我。 StackOverflow 上有几个类似的问题(例如 this onethis other one ),但它们似乎都使用相同的建议( from the Scrapy docs ):设置 CrawlerProcess ,将蜘蛛添加到其中,然后点击 start()

但是,当我对所有 325 个蜘蛛尝试此方法时,它最终锁定并失败,因为它试图在运行它的系统上打开太多文件描述符。 I've tried一些没有奏效的事情。

用Scrapy运行大量爬虫的推荐方式是什么?

编辑添加:我知道我可以扩展到多台机器并支付服务费用以帮助协调(例如 ScrapingHub),但我更愿意使用某种方式在一台机器上运行它进程池 + 队列,以便只有少量固定数量的蜘蛛同时运行。

最佳答案

最简单的方法是从命令行运行它们。例如:

$ scrapy list | xargs -P 4 -n 1 scrapy crawl

将运行你所有的蜘蛛,最多同时运行 4 个蜘蛛。一旦此命令完成,您就可以在脚本中发送通知。

一个更可靠的选择是使用 scrapyd .它带有一个 API、一个最小的 Web 界面等。它还将对爬网进行排队,并且一次只运行某个(可配置的)数字。您可以通过 API 与它交互以启动您的蜘蛛并在它们全部完成后发送通知。

Scrapy Cloud非常适合这个 [免责声明:我在 Scrapinghub 工作]。它将允许您一次只运行一定数量的作业,并且有一个待处理作业队列(您可以修改、在线浏览、确定优先级等)和比 scrapyd 更完整的 API。

您不应该在一个进程中运行所有蜘蛛程序。它可能会更慢,可能会引入无法预料的错误,并且您可能会达到资源限制(就像您所做的那样)。如果您使用上述任何选项单独运行它们,只需运行足够的时间以最大限度地利用您的硬件资源(通常是 CPU/网络)。如果此时您仍然遇到文件描述符问题,您应该增加限制。

关于python - 以受控方式运行数十个 Scrapy 蜘蛛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48088582/

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