-
Notifications
You must be signed in to change notification settings - Fork 4
ArkEngine/abcrawler
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
--系统简介--
--模块介绍--
----evcrawler
------基于libevent中的evhttp的抓取器
--支持按照host的压力控制
--支持dns cache
--支持多线程的异步并发抓取
--支持抓取状态统计
--支持抓取数据持久化
----sender
------负责把抓取到的数据发送到远程接受者(link_db_updater.py和page_db_updater)
evcrawler把抓取到的数据写入以filelinkblock形式组织的数据中,sender负责读取filelinkblock中的数据,发送给接受者。
sender的特性如下:
--支持进度记录,进度文件在offset目录下
--支持区分消息类型,目前只有一类消息,即'event 0 # 0'
--支持消息回滚(抓取系统中没有用到这个特性)
--可以监控offset中的进度文件,来判断下游接受者是否工作正常,存在消息延迟。
----link_db_updater.py
------负责接受sender发送的网页数据,分析网页数据,更新此次抓取的url信息,并分析页面,提取新发现的url并插入到link_info表中
------link_db_updater.py使用到了link_info表中的uniq_url_sign索引,该索引用于url去重,和选取出refer_sign对应的url。
----page_db_updater.py
------负责接受sender发送的网页数据,以md5sum(url)为key,把网页数据以及meta信息插入到mongodb中
----selector.py
------定期读取evcrawler中的统计信息,根据每个host的统计信息,从link_info表中选取该host下的连接,发送到evcrawler中进行抓取
--selector会记录每个host选取到的最大url_no,每次会以此最大的url_no开始来选取待抓取的url.(当前的调度策略是仅仅抓取新连接)
------selector.py使用到了link_info表中的host_no索引。
----stator.py
------供调试所用,可以显示evcrawler中各个站点的待抓取队列长度,当前并发抓取数目等信息
--部署说明--
-1- 把该域名的种子url插入到数据库的host_info和link_info表中
-2- 在evcrawler的配置host_visit_interval.config.json中增加某个域名的配置信息,重启evcrawler
TODO
增加每分钟的抓取量控制,与并发控制相结合
Join the chat at https://gitter.im/ArkEngine/abcrawler
About
a better cralwer
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published