原文地址: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.爬取的资源更新到数据库中。

以上就是垂直爬虫的工作过程,为什么要分成三步走呢?这样能够将风险分化,不至于某个地方错了,必须整个重来。维护爬虫最耗费人工的地方就是当今网站的反爬虫策略已经日趋成熟,其实爬取资源的过程,就是与整个互联网形形色色的反爬虫策略做博弈的过程。

垂直搜索架构(爬虫部分)相关推荐

  1. 垂直搜索架构(爬虫部分) ------垂直爬虫

    垂直爬虫的代码实现比较简单,主要是两方面: 1. 限定url,一般是通过正则匹配 2.限定内容,比如列表页面只要抓取详细页面的url,详细页面只要抓取特定内容,一般都是用css 选择器或者xpath的 ...

  2. 深入浅出搜索架构引擎、方案与细节(上)

    2017-02-14 58沈剑 架构师之路 一.缘起 <100亿数据1万属性数据架构设计>文章发布后,不少朋友对58同城自研搜索引擎E-search比较感兴趣,故专门撰文体系化的聊聊搜索引 ...

  3. 简析Instgram的搜索架构

    原文: Search Architecture 作者: Maxime Boucher, Thomas Dimson 翻译: 孙薇 责编: 钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qians ...

  4. Scrapy 豆瓣搜索页爬虫

    Scrapy 豆瓣搜索页爬虫 使用scrapy爬虫框架对豆瓣图书搜索结果进行爬取 Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架 可以应用在包括数据挖掘,信息处理或存 ...

  5. 垂直搜索开发:垂直搜索引擎开发全过程[原创]

    //http://blog.csdn.net/chengg0769 转载保留此行 //这只是我随笔涂鸦,我并不是一个完整实践者,只是准备如此施行.勿笑话我. //070817增加忠告部分:070823 ...

  6. 架构 | 京东商品搜索架构设计

    电商搜索系统存在以下特点: 数据量庞大.(上亿级别) 高并发.(日均pv过亿.数十亿) 一条商品数据由商品基本信息.价格.库存.促销.评价等组成,这些数据存储在各自业务系统当中.(多数据源导致构建索引 ...

  7. 京东商品搜索架构设计

    电商搜索系统存在以下特点: 数据量庞大.(上亿级别) 高并发.(日均pv过亿.数十亿) 一条商品数据由商品基本信息.价格.库存.促销.评价等组成,这些数据存储在各自业务系统当中.(多数据源导致构建索引 ...

  8. 【魔豆观察】周鸿祎悄然成为高德董事 或为360垂直搜索开辟新战场

    奇虎360和百度的战斗本周持续升温 虽然没有以往"3Q大战"."小3大战"的口水四溅,双方实际上的较量力度却并未减弱.8月28日晚,百度将来自360搜索的垂直搜 ...

  9. 简析Instagram的搜索架构

    原文: Search Architecture 作者: Maxime Boucher, Thomas Dimson 翻译: 孙薇 责编: 钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qians ...

最新文章

  1. wxWidgets利用透明图片自定义工具条
  2. appium java 测试用例_如何在C#中使用Appium编写测试用例?
  3. Mysql CURD复习(数据库、表、数据)
  4. 如何在Xbox One或PlayStation 4上为Skyrim特别版安装Mods
  5. STEAM教育风口正劲,如何培养STEAM思维?
  6. java提高篇之抽象类与接口
  7. matlab设置固定的窗宽窗位,python实现CT窗宽窗位的调整(即指定HU值保存图像)...
  8. skywalking原理_微服务链路追踪原理
  9. 83.均衡策略:round-robin
  10. linux如何运行java程序,Linux环境下运行简单java程序
  11. python之helloworld
  12. scala 入门初探
  13. 电子元器件晶体二极管的识别和检测注意事项
  14. 基于KNX技术设计的智能照明控制系统在医院的设计与应用
  15. UG二次开发GRIP标准件库
  16. QT 之ECharts加载shp方法
  17. 分布式数据库核心原理
  18. 最小二乘法曲线拟合+C代码
  19. 计算机应用类,计算机应用领域分为几大类
  20. 六大云计算厂商南山论剑,收下这封英雄帖!

热门文章

  1. ADC-DAC知识体系--DAC性能指标
  2. html2canvas
  3. 年仅38岁!中科院博导不幸去世,饶毅发文悼念:他曾是我的学生
  4. Adodbapi调用sqlserver储存过程的问题及pymssql的使用2009-12-22
  5. 【Case】result set exceeds the maximum size(100M)
  6. Android Google Lens in Camera
  7. 微信小程序系列----列表条件筛选
  8. matlab 绘制一分钟k线图,超短线分钟,1分钟k线图最佳买卖点
  9. 吓人代码html,HTML5 canvas幽灵鬼魂动画代码 (吓人的效果)
  10. Element UI下拉列表el-option中的key、value、label含义