乐思软件的主要目标就是解决网络信息的采集问题。我们在这个问题上研究了10年也实践了10年,为国内外许多客户提供了几千次网络信息采集服务。在此基础上开发的乐思网络信息采集系统,目前居于国际领先水平(曾在国际招标中击败美国竞争对手),国内无出其右者。我们的采集软件和深聚焦爬虫类似,但是功能要比简单的爬虫强大,只要是公开的网站信息,写好配置都能够采集。
马云说,大数据时代来了。现在太多互联网公司都在做大数据,每个公司的数据来源都不止一个,其中占比重较大的一个数据源非网络爬虫莫属。然而不同的公司格局业务背景不同,所需要的数据类型也就不同。不同于搜索网站所用的通用爬虫,聚焦爬虫开始越来越多的被人们提起。
聚焦爬虫,又称主题爬虫(或专业爬虫),是“面向特定主题”的一种网络爬虫程序。它与我们通常所说的爬虫(通用爬虫)的区别之处就在于,聚焦爬虫在实施网页抓取时要进行主题筛选。它尽量保证只抓取与主题相关的网页信息。
聚焦爬虫主要分为两大类。一类是浅聚焦爬虫,所谓浅聚焦爬虫是指,爬虫程序抓取特定网站的的所有信息。其工作方式和通用爬虫几乎一样,唯一的区别是种子URL的选定确定了抓取内容的一致,其核心是种子URL的选择。另一类是深聚焦爬虫,深聚焦爬虫是指在海量的不同内容网页中,通过主题相关度算法选择主题相近的URL和内容进行爬取。其核心是如何判断所爬取的URL和页面内容是与主题相关的。
关系如下:
由图可见,浅聚焦爬虫可以看成是将通用爬虫局限在了一个单一主题的网站上,因此我们通常所说的聚焦爬虫大多是指深聚焦爬虫。
浅聚焦爬虫从一个或若干初始网页的URL开始,(例如分类信息网)获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
其工作流程如图:
可见浅聚焦爬虫的基本原理跟通用爬虫的基本原理是一样的,其特点是选定种子URL,例如,要抓取招聘信息,可以将招聘网站的URL作为种子URL。用主题网站保证了抓取内容的主题一致。
深聚焦爬虫最主要的特点是主题一致性。然而在浩如烟海的互联网大数据中要保证所抓取的数据主题一致并不是一件简单的事情。针对不同的数据需求,这其中需要的策略和方式并没有统一的解答。在这里不说具体的解决方法,只讨论一下常见的解决思路。
这种解决方法是不管页面的主题是什么,先将页面爬取下来。对页面进行简单的去噪后,利用主题提取策略(关键字,分类聚类算法等)对处理后的页面内容进行主题提取,最后对比设定好的主题,如果主题一致,或在一定的阀值内,则保存页面进一步进行数据清洗。若主题偏差超过一点阀值,则直接丢弃页面。这种方式的优点是链接页面全覆盖,不会出现数据遗漏。但是缺点也十分致命,那就是全覆盖的页面,很大一部分是与主题无关的废弃页面,这极大的拖慢了爬虫爬取数据的速度。到后期,爬取数据的速度将是无法接受的。
上面介绍了浅聚焦爬虫的核心是选定合适的种子URL,这些种子URL主要是主题网站的入口URL。比如北京赶集网担保贷款频道的入口URL:http://bj.ganji.com/danbaobaoxian/,这个URL透漏给我们很多信息,根据这些信息,我们可以初步预测到这个URL所链接的页面的主题就是担保保险,其地域在北京,其平台是赶集网。由此我们发现,互联网上的网站或者网站的一个模块大部分都是有固定主题的,并且同一网站中同一主题的页面URL,都有一定的规律可循。针对这种情况,通过URL预测页面主题的思路也就自然而生了。除此之外,页面中绝大部分超链接都是带有锚文本的,而锚文本基本可以看做是对目标页面的概括描述。结合对URL的分析和对锚文本的分析,对目标页面进行主题预测的正确率也就相当可观了。显而易见,针对URL的主题预测策略,可以有效的减少不必要的页面下载,节约下载资源,加快下载速度。然而,这种预测结果并不能完全保证丢弃的URL都是与主题无关的,因此会有一些遗漏。同时,这种方式也无法确保通过预测的页面都是与主题相关的,因此需要对通过的预测的URL页面进行页面内容主题提取,再对比与设定的主题做出取舍。
通过上面的分析,得出一般的解决方法。就是先通过URL分析,丢弃部分URL。下载页面后,对页面内容进行主题提取,对比预设定的主题做取舍。最后进行数据清洗。
深聚焦爬虫的一般结构如下图:
六个主要的组成部分【控制中心】【下载模块】【抽取模块】【清洗模块】【消重模块】【资源模块】
大数据时代,对数据的多样性和针对性要求越来越高。随之爬虫的架构方式也更加灵活多变。比较常见的开源爬虫框架有Crawler4j、WebMagic、WebCollector、scrapy等。另一方面,针对爬虫的抓取,被抓取网站也制定了相应的防爬虫措施。常见的防爬虫方式有如下几种:
一、针对频繁访问网站的IP设定访问限制。这是最常见的一种放爬虫方式,具体体现是,在一个单位时间内,同一个IP的请求数量达到了网站设计的阀值,这个IP就被限制访问。面对这种情况,可以制定适当的IP访问策略。
二、使用js和ajax技术的动态页面。这样的网页源代码中并没有包含所需的数据,数据包裹存在于二次请求的返回文档中。针对这样的页面,可以分析请求过程,提取二次请求的URL,进而得到想要的数据。
三、其他情况:随着互联网的不断发展,出现了各种各样的防爬虫方式。这就需要人们根据实际情况,针对性的解决问题。比如使用模拟浏览器(htmlunit,selenium)技术等。
总之,没有一成不变的互联网,就没有一成不变的爬虫,拥抱变化,才能让爬虫爬的更远。
每一个社交网站都有海量的数据,和海量数据成正比的是社交网站的防爬虫策略。这就对爬虫提出了更高更严格的要求,也更细化了不同爬虫之间的差异。然而一成不变不是互联网的主调,依存互联网生存的公司,更要学会拥抱变化,甚至预测变化,方能在未来乘风破浪,越行越远。