基于主题网络爬虫的信息数据采集方法的研究与应用
2016-07-10盛亚如
盛亚如
互联网上的各种信息以数百万级的方式增长着,而这些信息又大多是散乱分布的,无法满足人们所要求的整合信息分析的需求,传统的采集和收集方法又很难满足要求。因此本文提出利用主题网络爬虫的概念和方法,运用正则表达式去匹配出网页中所需要的特定信息数据,有效的增强爬虫程序的适用性、缩短用户获取信息的时间。并将此方法应用于二手房信息数据采集中,包括价格、户型、楼层等基本数据,建立起了一个统一的二手房数据库。
【关键词】主题网络爬虫 正则表达式 二手房
1 引言
互联网上的信息数据以爆炸式的方式增长着,而这些信息数据内容又大多是基于页面形式的,其中包含一些非结构化的数据,如文字、图像、视频等。如果只是采用人工化的方式对信息数据进行采集,已经很难满足人们的要求了。因此有必要采用某种技术或手段从互联网上自动采集信息数据。
网络爬虫能实现对互联网信息数据的自动采集,从而弥补了人工采集的缺陷。网络爬虫是随着搜索引擎发展而产生的一种通用信息采集技术,是搜索引擎中的核心部分,它根据用户要求从互联网上下载网页,尽可能多的抓取网页中的相关链接和内容,并能沿着链接继续爬行,是一种能力强大的信息采集程序。
2 主题网络爬虫
主题网络爬虫是在通用网络爬虫的基础上进行的延伸,根据某一领域内特定的主题进行相关信息的查询,搜索互联网抓取下载网页,从网页中采集相关信息数据和超链接。它并不会访问所有的网页,而是在访问前就判断超链接、锚文本、文本等与主题的相关度,按照相关度的高低来决定访问的优先级顺序。
主题网络爬虫的主要思想就是:把用户搜索的查询词作为主题,从选定的初始URL出发,访问网页中的所有超链接,根据某种搜索策略对这些URL进行主题相关度预测,将符合要求的URL加入待访问队列中,并按照某种优先级排序从队列中抽取URL来作为下一次要访问的对象,按照这种规律执行下去,直到待访问队列为空或者满足某种停止条件为止。
3 基于主题网络爬虫的信息数据采集方法与应用
通过分析网站页面时发现,页面中关于某一项主题的结构和框架都是一样的,因此可以考虑运用正则表达式去匹配出页面中我们所需要的链接和内容。下面以安居客网站为例进行二手房数据的采集。
3.1 网站页面分析
3.1.1 链接地址页面分析
通过观察安居客青岛市二手房的房源列表,我们发现,每一条房源信息的组织结构是一样的,如房源地址的链接是上下结构排列的,价格,面积等信息的结构排列都是在同一个位置的。深入分析页面源代码发现,每一个房源链接的地址都是在herf=” ”引号之间,因此可以得出匹配房源链接地址的正则表达式:"
3.1.2 房源具体信息页面分析
网站具体页面中包含有房屋的售价、面积等基本信息,我们所建立的二手房数据库就是把这些字段全部收集起来,放到一个数据表中以供后期使用。观察网页源码我们可以发现,有些内容的源代码前后的HTML标签是不一样的,因此,就有必要对我们所需要的每一项内容写一个正则表达式,以匹配面积内容为例,可以得到正则表达式为:
3.2 采集流程
用户选取要抓取的网站,系统由初始URL开始访问网站,下载分析URL的源代码,利用编写好的正则表达式去匹配出此页中的超链接和文本内容,将超链接加入到待抓取队列中的同时,将文本内容存入数据库中,根据先进先出的次序从待抓取队列中抽取出新的URL开始访问,依次进行下去,直到待抓取队列为空或者满足系统停止条件为止。
3.2.1 获取网页源代码
爬虫对网页抓取的原理是通过Http协议请求访问指定的URL资源,URL资源以html文档的形式返回给爬虫,然后通过对html文档的解析完成信息的采集任务。首先,获得URL后,系统通过Http协议发出访问请求,一般采用GET方法;其次,根据HTTP响应判断是否已成功加载此URL,如果成功加载,就会将网页送到Html解析器中,根据UTF-8编码形式,将语言转换成一个统一的编码形式,否则得到的就会是乱码;最后,将得到的网页源码返回到一个变量中。
3.2.2 获取房源链接地址列表
在系统设计的时候,定义了三个存储URL的队列:预读房源队列、已读房源队列、错误房源队列。预读房源队列用于存储将要访问的URL队列,已读房源队列用于存储已经访问过并成功采集信息的URL,错误房源队列用于存储不能访问到的URL队列。这3个队列都是用动态数组进行存储和表示的。
对选定的初始URL进行访问和处理,由于Http响应的网页是以字符串类型返回的,其中包含了大量的html代码,这时就需要事先编写好的正则表达式对其进行匹配,可以从title、meta等标签中提取出所需要的信息。通过上文描述的匹配房源链接地址的正则表达式来匹配出初始网页所含有的房源超链接地址,将其加入到预读房源队列中,同时利用正则表达式下一页\s>;"匹配出下一页的链接地址,并以下一页的链接地址为初始URL,循环执行这一过程,直到下一页的地址为空或者满足停止条件为止。得到的匹配结果如图1所示。
3.2.3 获取房源信息数据
判断预读房源队列是否为空,如果队列为空,说明没有要继续爬行访问的URL了,此时就结束爬行了,如果队列不为空,则从预读房源队列中取出队首的URL进行访问,如果成功加载网页,得到网页的源代码,根据编写好的正则表达式对其进行匹配,并把匹配下来的内容保存到二手房数据库中。最后,将当前URL加入到已读房源队列中,如果访问不成功,就将此URL加入到错误房源队列中。循环执行这一过程,直到预读房源队列为空或者满足停止条件为止。
网页展现给用户的主要内容是它的文本信息。因此,在获得网页源代码后,需要针对网页抽取出它的特定内容。从预读房源队列中取出URL,解析其源代码,利用正则表达式匹配出其页面的具体信息,存入到数据库中。以小区、户型、面积为例,其正则表达式如图2所示。
根据要求,创建二手房数据库后,将匹配到的房产信息数据存入到数据库中。得到的二手房数据库部分结果如图3所示。
4 总结
本文实现了一种切实可行的通过正则表达式去匹配信息数据的方法,满足用户对特定信息的需求,并将此方法应用于了二手房信息数据的采集中,成功抓取了网站上的二手房信息数据,建立起了一个二手房数据库。
参考文献
[1]孙骏雄.基于网络爬虫的网站信息采集技术研究[D].大连海事大学,2014.
[2]Dikaiakos M D,Stassopoulou A, Papageorgiou L.An investigation of web crawler behavior: characterization and metrics[J]. Physical Chemistry Chemical Physics, 2001,3(5):867-872.
[3]罗刚.自己动手写网络爬虫[M].北京:清华大学出版社,2010.
[4]杨文刚, 韩海涛.大数据背景下基于主题网络爬虫的档案信息采集[J].兰台世界(旬刊),2015(20):20-21.
作者单位
中国海洋大学信息科学与工程学院 山东省青岛市 266100