网站采集器技术分析与设计
2016-03-12赵春霞青岛职业技术学院青岛255666
赵春霞(青岛职业技术学院,青岛,255666)
网站采集器技术分析与设计
赵春霞
(青岛职业技术学院,青岛,255666)
近年来,随着国内大数据战略越来越清晰,对网站数据抓取和信息采集技术要求越来越高,然而信息采集技术相对比较薄弱,笔者通过对网站采集器的技术进行分析,并提出了一些可实施的规则和措施,用于技术指导。
网站采集器;规则 ;正则表达式
1 网站采集的基本概念
网站采集,就是从网站页面中自动抽取指定的数据,完成数据采集的工作,需要配置一些规则来指导计算机的操作,这个规则的组合称之为“采集任务”,采集任务中至少要包括网页地址、网页的拷贝数据的规则。
2 网站采集规则
2.1 单个网页采集数据的规则
2.1.1 按照字符串获取的规则来指导计算机采集数据,一个网页是由浏览器网页源码进行解析后展示的结果,任何浏览器都可查看网页源码,打开网页源码后,在网页源码中通常(注意:是通常)都可以找到网页显示的内容,自然文章标题也可以找到,找到文章标题后,告诉计算机要采集这个标题数据,规则就是:从哪个字符开始获取到那个字符结束,例如:“”这样一个字符串,要获取“今天的天气很好啊”,就是告诉计算机从“”结束,将中间的字符采集下来,计算机就会对这个字符串进行识别,并按照定制的规则将所需要的数据获取。采集数据,就是要配置这样的规则来指导计算机将网页数据逐一采集下来;(2)第二种方式来指导计算机采集数据:通常情况网页的源码是一个XML文档,网页源码是一个结构化的、具有标记识别的一种文档。这样,可以通过一种方式来标记需要采集的数据,让计算机自动寻找并获取数据,这种方式也就是常见的可视化采集。可视化采集的核心是XPath信息,XPath是XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。用XPath来制定文档某个位置的数据,让计算机来采集,这样也实现了指导计算机采集数据的需求;
2.1.2 采集N个有规则的页面
要采集N个有规则的页面,需要找到这N多个网页的规则,用一种规则来让计算机自动解析完成N多个网页的构成。这种解析可以由一下几种方式:
按照一个可识别的规则解析,譬如:数字递增,字母递增或日期递增,举个例子:http://www.******.com/article.aspx?id=1001,这是一个文章的Url,比较容易理解,id是url提交的参数,1001是一个参数值,代表一篇文章,那么就可以通过数字递增的形式来替代它,http://www.******.com/article.aspx?id= {Num:1001,1999,1},这 样 就 完 成了998篇文章url的构成,系统会自动将url解析出来,{Num:1001,1999,1}是一个数字递增的参数,从1001开始递增,每次递增加1,直至1999结束。可以在采集任务中提供了很多这样的参数来帮助用户完成N多url的构成;
有些Url并不一定可以通过一定可识别的规则来构成,那该如何?譬如:http://www.******.com/s.aspx?area=北京,这是一个带入了地区参数的Url,全国有众多的城市,总不能一个一个输入。针对这种Url,可以用字典参数,首先将全国城市数据获取,建立在字典中,然后通过配置url完成这种貌似无规则url的构成,http://www.******.com/s.aspx?area= {Dict:城市},这个参数表示了使用字典:城市的值,这样也可以完成成批Url的构成。
按照网站的数据组织结构来成批配置Url,浏览一个网站通常是从网站的首页进入,而网站为了更好的让用户找到期望看到的信息,都会按照一定的分类结构对数据进行组织,并提供一个列表对数据进行展示,分类一般都是网站的频道,列表通常是一个频道下的列表(数据索引)页面,由于数据众多,这个页面可能会有翻页,也可能还会进行子类的划分。所以,可以通过这个方式进行成批Url的配置。这个配置的过程,需要在采集任务中需要配置导航规则、翻页规则。
导航规则:导航就是从一个页面进入另外一个页面的操作,网站的首页就是一个导航页,首页会有很多的栏目入口,点击就可以进入各个栏目,导航就是让计算机自动进入每个栏目,导航可以有很多,代表的就是从一个导航页进入一个栏目,再进入一个子栏目,再进入一个详细的页面,如果详细页还需要提取更多的数据,那么还需要导航进入,就好像在浏览数据一样,从一个页面进入另一个页面,再进入一个页面,每个导航页都带有了大量的需要采集数据的url,系统会自动获取这些url来实现成批数据的采集;
翻页规则:当数据量大的时候,网站会提供翻页操作,很典型的就是新闻列表页,会有很多新闻,第一页一直到第N页,所以,为了可以获取第1页以后的数据,还需要告诉计算机如何翻页,这个就是翻页规则,让计算机就像浏览网页一样,一页一页翻,直至最后一页,将数据获取。
3 采集数据规则匹配的技巧
在实际的数据采集过程中,采集的数据质量可能并不一定可以满足的要求,譬如:带有了很多的无用网页信息,也可能在用规则匹配的时候会很难找到准确的起始采集的字符和终止采集的字符。可借鉴以下采集数据规则匹配的一些技巧,和数据加工的操作,从而获取高质量的数据。
根据用户规则采集数据的核心是正则表达式匹配,正则表达式是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则在匹配(或者可以说是获取)字符串时是非常方便的,但其又很不容易理解,所以需要采集器使用界面化的配置方式让用户输入获取字符的起始位置和终止位置来自动构成一个正则表达式,进行数据的获取。不同的采集器核心对正则匹配的规则构成是不一样的。因此可以采用一些面向正则良好的信息来配置规则,甚至可以用正则通配符来提升采集数据的准确度,更甚可以自定义正则进行数据的匹配(一般都是高级用户来使用)。
采集数据加工是一项非常有必要且很重要的功能,采集的数据并不一定是想要的最终数据,例如采集的文章正文,通常都会带有等标签,这些标签用于在数据展示的时候对数据进行格式化操作,但对于应用时,可能并不需要这些标签,那么可以通过“去除网页符号”来自动将这些标签去掉。或者只将一些文字修饰的标签去掉,但保留文章的段落标记,这样的数据更容易使用。通过数据加工操作,可以将数据进行二次处理,直至其最大化的复合的应用条件。
4 其他技术下的数据采集
在很多情况下,在浏览网页时可以看到数据,但查看源码时却无法找到需要采集的数据。这种情况通常是网站采用了ajax 或iframe技术,如果你使用的事firefox浏览器,可以在页面鼠标右击需要采集的数据,会弹出一个菜单,在菜单项中找是否有“此框架”的菜单项,如果有,那就是iframe,如果没有就是ajax。Ajax一种创建交互式网页应用的网页开发技术。使用js请求xml数据并展示到网页中,这个请求的数据是在网页中无法查询到的。遇到这种情况可以使用http嗅探器来查找js请求数据的url,这个网址就是需要采集数据的url。
可能还会遇到另外一种情况,url配置正确,采集的数据也可以通过网页源码看到,但实际采集的时候,却无法采集到数据或出现了错误。这种情况有可能需要配置两个信息:cookie 和user-agent;部分网站即便是匿名访问系统也会分配一个cookie信息用户身份识别,User Agent中文名为用户代理,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断 User Agent 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,无论是cookie还是user-agent都可以通过网络嗅探器来进行查看获取信息。
现在很多行业网站都是用户会员授权的,所以需要采集的数据也是需要会员身份的,会员必须登录后才能看到这些数据,在进行数据采集时,也是需要进行登录身份验证的,在进行登录采集时,通常系统都是记录cookie信息,在请求网页时一并发送,让网站进行身份验证,从而获取数据。所以,在采集登录网页时,要记录登录的cookie信息。
赵春霞,性别:女(1975.2-),汉族,硕士,副教授,籍贯:山西省平陆县,研究方向:软件开发。
Technical analysis and design of website collector
Zhao Chunxia
(Qingdao Technical College,Qingdao,255666)
In recent years,as domestic big data strategy has become increasingly clear,crawling the site data and information gathering techniques have been demanded increasingly,however,information gathering technology is relatively weak,the author analysised the site collector techniques,and made a number of rules and measures that can be implemented for technical guidance.
the site collector;rule;Regular Expressions
院级课题项目:基于开源Web CMS的校园网站设计与实现(课题编号:11-A-5)