我已经使用scrapy编写了一个工作爬虫,
现在我想通过一个Django webapp来控制它,也就是说:
- 设置 1 个或多个
start_urls
- 设置 1 个或多个
allowed_domains
- 设定
settings
值 - 启动蜘蛛
- 停止/暂停/恢复蜘蛛
- 在运行时检索一些统计信息
- 蜘蛛完成后检索一些统计信息。
一开始我以为scrapyd就是为此而生的,但是在阅读了文档之后,它似乎更像是一个能够管理“打包蜘蛛”的守护进程,也就是“scrapy Eggs”;并且所有设置(start_urls
, allowed_domains
, settings
)仍然必须在“scrapy egg”本身中进行硬编码;所以它看起来不像是我的问题的解决方案,除非我错过了什么。
我也看了这个问题:How to give URL to scrapy for crawling? ; 但是提供多个 url 的最佳答案被作者 himeslf 限定为“丑陋的 hack”,涉及一些 python 子进程和复杂的 shell 处理,所以我认为在这里找不到解决方案。此外,它可能适用于start_urls
,但似乎不允许allowed_domains
或settings
。
然后我看了一下scrapy webservices:这似乎是检索统计数据的好方法。但是,它仍然需要一个正在运行的蜘蛛,并且没有任何改变的线索settings
关于这个主题有几个问题,似乎没有一个令人满意:
- using-one-scrapy-spider-for-several-websites 这个似乎已经过时了,因为从 0.7 开始,scrapy 已经发展了很多
- created-a-generic-scrapy-spider 没有接受的答案,仍在谈论调整 shell 参数。
我知道scrapy用于生产环境;并且像scrapyd这样的工具表明确实有一些方法可以处理这些要求(我无法想象scrapyd正在处理的scrapy鸡蛋是手工生成的!)
非常感谢你的帮助。