网页抓取/数据抽取/信息提取工具包MetaSeeker的网络爬虫设计原理
网络爬虫种类繁多,下面进行很粗略的分类并说明MetaSeeker工具包中的爬虫属于哪一类。
如果按照部署在哪里分,可以分成:
1,服务器侧:一般是一个多线程程序,同时下载多个目标HTML,可以用PHP, Java, Python(当前很流行)等做,一般综合搜索引擎的爬虫这样做。但是,如果对方讨厌爬虫,很可能封掉服务器的IP,服务器IP又不容易改,另外耗用的带宽也是挺贵的。
2,客户端:很适合部署定题爬虫,或者叫聚焦爬虫。做一个与Google,百度等竞争的综合搜索引擎成功的机会微乎其微,而垂直搜诉或者比价服务或 者推荐引擎,机会要多得多,这类爬虫不是什么页面都取的,而是只取关心的页面,而且只取页面上关心的内容,例如提取黄页信息,商品价格信息,还有提取竞争 对手广告信息的。这类爬虫可以部署很多,而且可以很有侵略性,对方很难封锁。
MetaSeeker工具包中的爬虫属于客户端定题爬虫(更详细的产品特点),可以低成本大量部署,由于客户端IP地址是动态的,所以很难被目标网站封锁。
我们只说定题爬虫,普通爬虫要简单的多,网上很多,如果从怎样提取数据上分,还可以分成两类:
1,通过正则表达式提取内容,HTML文件就是一个文本文件,直接使用正则表达式在指定地方提取内容即可,"指定地方"不一定是绝对定位,例如,可以参照HTML的标签定位,更准确
2,利用DOM提取内容,HTML文件先转成DOM数据结构,再遍历这个结构提取内容。
有人会问,为什么还要用DOM方式,转了一道?有很多DOM方式的存在理由:首先,DOM结构的分析都不用自己做,有现成的库,编程并没有变复杂; 第二,可以实现很复杂但是很灵活的定位规则,而正则表达式很难写;第三,如果定位是要考虑HTML文件结构,用正则表达式不容易解析,HTML文件经常有 错,如果将这个任务交给现成的库,要容易很多。第四,假设还要解析Javascript的内容,正则表达式无能为力了,当然DOM方式自己也无能为力,但 是可以利用某个平台的能力,就有可能提取AJAX网站内容。还有很多原因。
MetaSeeker工具包中的爬虫就就采用了DOM方式,它利用Mozilla平台的能力,只要是Firefox看到的东西,它都能提取。
MetaSeeker工具包下载地址:http://www.gooseeker.com/cn/node/download/front