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

垂直爬虫的技术难点没有全网爬出那么多,主要要解决的是反爬的问题.
针对性的做几个项目的垂直爬虫,你就慢慢形成了你自己的垂直爬虫框架,有了自己的任务管理,数据集存储,基本的数据处理器,实现了一些通用的采集器,这样有新需求的时候就比较简单了,对于垂直采集来说就是设置设置URL规则,写些解析页面的脚本代码.

以上是自己写了几个垂直采集系统的经验之谈,欢迎一起探讨

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

在垂直搜索的索引建立之前,我们需要到垂直网站上抓取资源并做一定的处理。垂直搜索与通用搜索不同之处在于,通用搜索不需要理会网站哪些资源是需要的,哪些是不需要的,一并抓取并将其文本部分做索引。而垂直搜索里,我们的目标网站往往在某一领域具有其专业性,其整体网站的结构相当规范(否则用户体验也是个灾难,想想东一篇文章西一篇文章基本没人会喜欢),并且垂直搜索往往只需要其中一部分具有垂直性的资源,所以垂直爬虫相比通用爬虫更加精确。

通常把爬虫爬取资源分成三个步骤: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. 垂直搜索架构(爬虫部分)

    原文地址:http://my.oschina.net/figoisxjs/blog/127511 在垂直搜索的索引建立之前,我们需要到垂直网站上抓取资源并做一定的处理.垂直搜索与通用搜索不同之处在于, ...

  2. php 垂直搜死哦,垂直搜索(Vertical Search)的详细介绍

    垂直搜索是相对于通用的搜索来说的,垂直搜索是通用搜索引擎的一种细化,垂直搜索专注于某一个特定行业的搜索,搜索的内容更加专一化,比如购物的内容,机械产品的内容,服务信息的内容等,是某一个行业内的搜索.垂 ...

  3. 互联网3.0时代下垂直搜索的发展研究

    背景 Web 3. 0 可以说是最近最火的词之一.简单说,Web 3. 0 意味着互联网发展史进入到新阶段,把互联网带到全新的转载自斗玩网水平.计算机科学家和互联网专家认为,Web 3. 0 会让互联 ...

  4. 如何学会垂直搜索,让想干的事情能干成

    如何学会垂直搜索,让想干的事情能干成 很多人搜索的时候,会想着用一个通用搜索引擎解决所有问题,大多数人最常用的应该就是百度了.但是事实上百度能搜到的信息虽然比较全面,但搜索的结果往往会面临信息量过大. ...

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

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

  6. 什么是垂直搜索-全面了解垂直搜索引擎

    垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户. 垂直搜索引擎和普通的网页搜索引擎 ...

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

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

  8. 众推平台架构mdash;mdash;分布式爬虫

    分布式爬虫架构 经过新一轮的投票,项目的范围已经基本确定. 大家决定 全力以付,集中攻克"分布式爬虫". 分布式爬虫架构1 使用队列,即生产者,消费都模式. 由于生产者将规则生成到 ...

  9. Java 多线程爬虫及分布式爬虫架构探索

    维护待采集的 URL 多线程爬虫程序就不能像单线程那样,每个线程独自维护这自己的待采集 URL,如果这样的话,那么每个线程采集的网页将是一样的,你这就不是多线程采集啦,你这是将一个页面采集的多次.基于 ...

最新文章

  1. 数据结构实验之链表一:顺序建立链表
  2. 再见Python!Yann LeCun警告:深度学习需要新编程语言
  3. Silverlight OA源代码(Silverlight4+SQLServer2005)
  4. loadrunner性能测试---添加windows多台压力机
  5. 华为云服务器密码修改,华为云鲲鹏云服务器安装MySQL 5.7.30
  6. SDL 库 无法解析的外部符号 __imp__fprintf
  7. 【原】unity3D ios 退出保存数据(2)
  8. dept在Java里面_EmpDeptManager 在JavaEE环境下搭建三大框架体系实现员工的增删改查系统 Develop 261万源代码下载- www.pudn.com...
  9. 当勒索病毒盯上视频产业,UP主们该如何保护数据安全?
  10. 《刀塔传奇》付费设计分析
  11. 联想y50更换固态硬盘_旧笔记本电脑更换固态硬盘
  12. asp 文本转时间_ASP.NET Core界面开发,DevExpress v19.2增强富文本编辑器功能
  13. html静态页面如何复用,一种前端页面模板复用的方法与流程
  14. 管桩的弹性模量计算公式_400管桩单桩水平承载力特征值计算书
  15. 大数据竞赛MR培训与题型
  16. 2017年国赛H题_远程幅频特性测试装置训练总结(硬件部分)
  17. 今日头条如何快速开原创?今日头条怎么一个礼拜开原创?
  18. Unity基本物体和临时对象
  19. waterMark相关
  20. oracle 查询指定时间范围

热门文章

  1. “知识屏蔽“是什么?阅读知识屏蔽的书有什么好处?
  2. 信捷PLC-C语言FB内编写轴控指令的方法举例-使能、速度控制、停止指令篇
  3. Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
  4. 国外智慧小镇_小镇上网
  5. 英国爵位的头衔和誉称
  6. 专线映射地址_专线连接方式
  7. 撰写毕业论文中word公式编辑器的学习使用(一)——录制宏
  8. 北京大学深圳研究生院计算机学什么,CCF@U581: 鹿泽光走进北京大学深圳研究生院...
  9. 2022智慧工地噪声扬尘监测系统解决方案最新版
  10. 大话C#之WPF实践场景入门进阶,深入浅出解析教程 28 代码框架封装-不断更新版