垂直搜索架构(爬虫部分)
2015-10-20 17:09
441 查看
原文地址:http://my.oschina.net/figoisxjs/blog/127511
在垂直搜索的索引建立之前,我们需要到垂直网站上抓取资源并做一定的处理。垂直搜索与通用搜索不同之处在于,通用搜索不需要理会网站哪些资源是需要的,哪些是不需要的,一并抓取并将其文本部分做索引。而垂直搜索里,我们的目标网站往往在某一领域具有其专业性,其整体网站的结构相当规范(否则用户体验也是个灾难,想想东一篇文章西一篇文章基本没人会喜欢),并且垂直搜索往往只需要其中一部分具有垂直性的资源,所以垂直爬虫相比通用爬虫更加精确。
通常把爬虫爬取资源分成三个步骤:url-crawling(链接抓取),detail-crawling(详情抓取),format&fusion(规整与聚合),以下是整体垂直搜索的架构及流程图:
初次爬取:
1.首先运营人员会选定需要抓取的目标网站,录入数据库的站源表sitelist,然后url crawler会读取出来存入map,并提出对应站点的正则解析规则。
2.根据事先制定的url列表页正则表达式,url crawler到列表页爬取列表并提取出来存入资源url表urllist,当中涉及一些列表页分页功能,具体视每个网站分页url规则而定。
3.info crawler从数据库的资源url表读出urls及其资源页的xpath规则,存入一个同步的队列中(一般做法会将url做md5处理,用于去重,以免重复爬取相同url,浪费资源),多线程下的每个爬虫程序将从此队列读取urls(若队列为空线程将进入等待),然后爬取每个资源页,并根据xpath规则提取有价值的资源(xpath用法详见xpath解析),并将提取的资源存入原始数据表originalresource。
4.format crawler从数据库原始数据表提取数据,进行进一步的规整、聚合(例如做一些资源分流下载服务器,会从目标网站爬取资源文件存入自己的文件服务器中),最终存入规整内容表中。
5.现在资源就可以被线上应用使用了。
更新爬取:
1.根据每个站点设定的url失效时间,定期的从数据库抽取需要更新的资源url,加入步骤3的队列中,进行资源爬取,并比较一些能鉴别资源是否有更新的字段(例如应用软件资源,可比较版本号)。
2.爬取的资源更新到数据库中。
以上就是垂直爬虫的工作过程,为什么要分成三步走呢?这样能够将风险分化,不至于某个地方错了,必须整个重来。维护爬虫最耗费人工的地方就是当今网站的反爬虫策略已经日趋成熟,其实爬取资源的过程,就是与整个互联网形形色色的反爬虫策略做博弈的过程。
在垂直搜索的索引建立之前,我们需要到垂直网站上抓取资源并做一定的处理。垂直搜索与通用搜索不同之处在于,通用搜索不需要理会网站哪些资源是需要的,哪些是不需要的,一并抓取并将其文本部分做索引。而垂直搜索里,我们的目标网站往往在某一领域具有其专业性,其整体网站的结构相当规范(否则用户体验也是个灾难,想想东一篇文章西一篇文章基本没人会喜欢),并且垂直搜索往往只需要其中一部分具有垂直性的资源,所以垂直爬虫相比通用爬虫更加精确。
通常把爬虫爬取资源分成三个步骤:url-crawling(链接抓取),detail-crawling(详情抓取),format&fusion(规整与聚合),以下是整体垂直搜索的架构及流程图:
初次爬取:
1.首先运营人员会选定需要抓取的目标网站,录入数据库的站源表sitelist,然后url crawler会读取出来存入map,并提出对应站点的正则解析规则。
2.根据事先制定的url列表页正则表达式,url crawler到列表页爬取列表并提取出来存入资源url表urllist,当中涉及一些列表页分页功能,具体视每个网站分页url规则而定。
3.info crawler从数据库的资源url表读出urls及其资源页的xpath规则,存入一个同步的队列中(一般做法会将url做md5处理,用于去重,以免重复爬取相同url,浪费资源),多线程下的每个爬虫程序将从此队列读取urls(若队列为空线程将进入等待),然后爬取每个资源页,并根据xpath规则提取有价值的资源(xpath用法详见xpath解析),并将提取的资源存入原始数据表originalresource。
4.format crawler从数据库原始数据表提取数据,进行进一步的规整、聚合(例如做一些资源分流下载服务器,会从目标网站爬取资源文件存入自己的文件服务器中),最终存入规整内容表中。
5.现在资源就可以被线上应用使用了。
更新爬取:
1.根据每个站点设定的url失效时间,定期的从数据库抽取需要更新的资源url,加入步骤3的队列中,进行资源爬取,并比较一些能鉴别资源是否有更新的字段(例如应用软件资源,可比较版本号)。
2.爬取的资源更新到数据库中。
以上就是垂直爬虫的工作过程,为什么要分成三步走呢?这样能够将风险分化,不至于某个地方错了,必须整个重来。维护爬虫最耗费人工的地方就是当今网站的反爬虫策略已经日趋成熟,其实爬取资源的过程,就是与整个互联网形形色色的反爬虫策略做博弈的过程。
相关文章推荐
- 网站国际化代码-多语言
- 分布式发布订阅消息系统 Kafka 架构设计 - 目前见到的最好的Kafka中文文章
- 关于MVC EF架构及Repository模式的一点心得
- Win7上IIS发布网站系统\部署项目
- iOS架构模式--MVC理解
- 使用javascript取得网站的根路径
- android专业分享1 Android利用Jsoup解析html 开发网站客户端小记。
- 网站安全性测试
- 入侵指定网站的思路~菜鸟必学
- 如何打造真正可动态扩展的服务架构
- 软件架构师之AOP
- VMware与OpenStack整合的三大参考架构
- 构建高并发高可用的电商平台架构实践
- 硬件架构图,比较实用,收走
- iscsi target tgt架构
- iscsi target IET架构
- 关于网站备案的44个问题
- 电商网站高并发下的数据安全
- 构建iOS稳定应用架构时方案选择的思考,主要涉及工程结构,数据流思想和代码规范
- HDFS的架构及原理