python - 这样的爬虫思路要怎么设计??
ringa_lee
ringa_lee 2017-04-18 09:48:22
[Python讨论组]

我有一个mongodb的数据库.

而有一只爬虫,每天往这个数据库里面抓内容加进去....
而另外一只爬虫,是负责给这些数据打标签,就是抓进去的数据,判断是垃圾数据,就打上垃圾,判断是好的数据,就打上优质 ,类似这种思路

而我现在有另外3-4个网站,网站的文章数据都是来自这个数据库,目的就是发现这个数据库只要有新的并且标签带有优质的数据,就马上发布到网站上...

那么我在设计爬虫的时候,如何做到最高效?
就是边采集的时候,边打标签,边发布数据??

我现在基本就是这样的流程:


for 采集数据 in 采集数据集合:
    给采集数据打上标签
        if 优质数据
            发布到网站上

不知道这样的伪代码大家看得懂吗?
但是用python 是线性执行的.可能效率比较差( 因为打标签 和发布的网站时间比较慢 )
要怎么设计呢?
有点乱,能看得懂的应该都是比较懂我的人

ringa_lee
ringa_lee

ringa_lee

全部回复(4)
PHPz

高估了自己的数据量,低估了python性能。
不用设计,花半天看scrapy文档,官方例子流程就符合你了。

伊谢尔伦

发布订阅模式,有优质内容就发布一个 "good_content" 事件,然后其他的网站订阅这个事件,这样不管你有多少网站,整个系统都是松耦合的。

首先,不用两只爬虫,一只爬虫爬去内容的时候,就可以分辨出是优质还是劣质内容,是的话,就直接发布 "good_content" 事件,你的爬虫系统就这么简单。

订阅了 "good_content" 的系统收到该事件,就会自动更新内容。具体是用什么来实现发布订阅模式,方法有很多。如果是在一个项目中,自己写代码实现一个就行了;如果不是一个项目,就用消息队列,或者Redis也有提供发布订阅的功能(据说不太好用,哈哈~)。

有问题可以继续讨论。

怪我咯

采集和发布分开来设计会比较好。
你负责采集,我负责发布。条理清晰。互不干涉。
你采集慢不关我的事,我发布慢也不关你的事。你把两个捆在一起,我觉得复杂化了。
没什么效率不效率。从你的描述上看,我没看出到底出了什么问题。

PHP中文网

生产者消费者模式,采集完数据扔到队列里去,打标的作为消费者读取队列,如果优秀就发布。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号