快速构建实时抓取集群
2. Linkbase:链接库的存储模块,包含一般的链接信息;是抓取系统的核心,使用redis存储。
3. XPATH:一门在 XML 文档中查找信息的语言,XPath 可用来在 XML 文档中对元素和属性进行遍历, 是 W3C XSLT 标准的主要元素。使用XPATH以及相关工具lib进行链接抽取和信息抽取。
4. XPathOnClick:一个chrome的插件,支持点击页面元素,获取XPATH路径,用于编辑配置模板。
5. Redis:一个开源的KV的内存数据库,具备很好的数据结构的特征和很高的存取性能。用于存储linkbase信息
6. Django:爬虫管理工具,用于模板配置,系统监控反馈。Django在这里主要是用来管理一个数据库,使用Admin功能。
7. Pagebase:页面库,主要是存储网页抓取的结果,以及页面抽取的结果,和dump交互,使用mysql实现。
8. Scrapy:一个开源的机遇twisted框架的python的单机爬虫,该爬虫实际上包含大多数网页抓取的工具包,用于爬虫下载端以及抽取端。
9. 列表页:指的商品页面之外的所有页面
10. 详情页:比如商品B2C的抓取中,特指商品页面,比如:http://item.tmall.com/item.htm?id=10321272374
b) Linkbase 使用Redis集群,存储linkbase信息。
1:抓取队列 (candidate list)
分为待抓取的url队列和更新的url队列;队列存放urlhash,使用redis的list数据结构,对于新提取的url,push到对应的列表里面,对于spider抓取模块,从list pop得到。对于一个站点而言,抓取队列有两种类型:列表页抓取队列和详情页抓取队列。
2:链接库 (linkbase)
链接库实际上是存储链接信息的DB;Key是urlhash,Value是linkinfo,包含url,purl,anchor,xpath。。。;在redis使用hash存储,直接存放在redis的里面。KV链接库,不区分页面类型。
3:已抓取集合(crawled_set)
已抓取集合指的是当前已经下载的页面的urlhash,存放已经抓取的网页,使用redis的set实现,set的key是urlhash,score是时间戳,已抓取集合主要是用来记录哪一些页面已经抓取和抓取的时间,用于后续的更新页面调度以及抓取信息的统计。同抓取队列一样,每一个站点有两种类型的已抓取集合,详情页和列表页
a) 频率(间隔多少秒)
b) 各个抓取列表的选取比例:get_detail,mod_detail,get_list,mod_list
链接抽取:抽取页面的链接,进行除重,对于新的链接,插入到待抓取列表里
内容抽取:按照模块的配置XPATH,抽取页面信息,并写入到pagebase中。
离线调度:按照更新的比例,从crawled_set里面,定期选取url进入Mod队列里面进行刷新。
下载端设计:
IP:每台机器需要配置多个物理公网IP,下载的时候,随机选择一个IP下载
抓取频度调整:读取配置文件,按照配置文件的抓取频率进行选取url
建议继续学习:
- 用Hyer来进行网站的抓取 (阅读:157232)
- 抓取网页内容生成Kindle电子书 (阅读:8332)
- 淘宝搜索:定向抓取网页技术漫谈 (阅读:8212)
- Python抓取框架:Scrapy的架构 (阅读:7741)
- HBase技术介绍 (阅读:6757)
- 解析Google集群资源管理系统Omega (阅读:4586)
- cURL基础教程 (阅读:3908)
- Hadoop集群间Hadoop方案探讨 (阅读:3742)
- 新浪博客抓取程序(php) (阅读:3743)
- “集群和负载均衡”的通俗版解释 (阅读:3513)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:长孙泰 来源: 搜索技术博客-淘宝
- 标签: 实时 抓取 集群
- 发布时间:2011-07-30 21:45:20
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [55] Oracle MTS模式下 进程地址与会话信
- [54] 如何拿下简短的域名
- [53] android 开发入门
- [52] Go Reflect 性能
- [52] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [48] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [32] 视觉调整-设计师 vs. 逻辑