(多个) scrapy 的脚本通过 scrapyd 部署之后,如果也使用了后台管理如 scrapydweb ,
那具体的 scrapy 和 scrapydweb 是怎么传递信息的
比如传递 scrapy 抓取了 N 个 items ,parse 了 M 个 pages
scrapy 向 scrapydweb 发送消息?还是 scrapydweb 向发送 scrapy 请求?
这样的传递消息是怎么实现的。
1
Kobayashi 2021-11-09 15:06:18 +08:00 via Android 1
我记得就是解析 scrapy 爬虫输出。好像作者依赖一个叫做 logparser 的库,也是自己写的。没研究过如何实现的。
|
2
featureoverload OP |
3
Kobayashi 2021-11-09 15:59:39 +08:00 1
可能没有,从名字看就是解析输出做统计。
ScrapydWeb 管理已经是这方面做的最好的。 崔庆才自己书里推荐的 Gerapy 完全就是狗屎,运行连个错误输出都没有,运行不起来你都无法调试。而且项目就是半成品,还没有实现完全 scrapyd 所有 API ,星都是靠书的流量拉的小白点的,绝对没有人生产中用。 Crawlab 没有采用 scrapyd 运行爬虫,基本就是直接管理命令行进程。因为没有采用 Scrapy 官方推荐的 scrapyd ,没有尝试过,不确定有没有这方面功能,有兴趣你可以看看它怎么做的。估计即便作了也是输出解析。 我记得 Scrapy 只会运行过程中利用 telnet 与运行的进程做交互,理论上可以直接获取进程中的一部分信息。但没听说过有人这么做。 |
4
lshu 2021-11-09 16:19:29 +08:00 1
继承或者自定义类似“scrapy.extensions.logstats.LogStats”的扩展,定时将其属性中的“stats”序列化,然后通过 api 等操作保存到数据库提供其他服务查询
|
5
lithium4010 2021-11-09 16:23:00 +08:00
可以直接写数据库?
|
6
996635 2021-11-09 16:23:20 +08:00 1
twisted 监听了信号量做处理, 同时内部 extension 还实现了一个 tcp server 可以通过通信, 抓了多少 是内部维护了个计数器, 默认是内存计数
具体看 https://github.com/scrapy/scrapy/tree/master/scrapy/extensions |