网站采集器如何实现网站数据采集
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
刚才讲到了,采集数据规则的匹配有两种方式:规则匹配和XPath路径匹配两种方式,但这两种方式都是基于我们在浏览网页源码时可以找到我们想要的数据。很多情况下,我们在浏览网页时可以看到数据,但查看源码时却无法找到需要采集的数据。这种情况通常是采用了:ajax或iframe,如果你使用的事firefox浏览器,可以在页面鼠标右击需要采集的数据,会弹出一个菜单,在菜单项中找是否有“此框架”的菜单项,如果有,那就是iframe,如果没有就是ajax。Ajax一种创建交互式网页应用的网页开发技术。使用js请求xml数据并展示到网页中,这个请求的数据是在网页中无法查询到的。遇到这种情况我们可以使用http嗅探器来查找js请求数据的url,这个网址就是我们需要采集数据的url。网络矿工内置了http嗅探器工具,可以使用其进行探测。
b)翻页规则:当数据量大的时候,网站会提供翻页操作,很典型的就是新闻列表页,会有很多新闻,第一页一直到第N页,所以,为了可以获取第1页以后的数据,我们还需要告诉计算机如何翻页,这个就是翻页规则,让计算机就像我们浏览网页一样,一页一页翻,直至最后一页,将数据获取。
上面讲到了如何成批的采集数据,在入门篇中也讲到了如何告诉计算机获取数据。但在实际的数据采集过程中,采集的数据质量可能并不一定可以满足我们的要求,譬如:带有了很多的无用网页信息,也可能我们在用规则匹配的时候会很难找到准确的起始采集的字符和终止采集的字符。
2、还有第二种方式来指导计算机采集数据:通常(注意:又是通常)情况网页的源码是一个XML文档。XML定义:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户构化的、具有标记识别的一种文档。这样,我们就可以通过一种方式来标记我们需要采集的数据,让计算机自动寻找并获取数据,这种方式也就是我们常见的可视化采集。可视化采集的核心是XPath信息,XPath是XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。用XPath来制定文档某个位置的数据,让计算机来采集,这样也实现了我们指导计算机采集数据的需求;
3、按照网站的数据组织结构来成批配置Url,我们浏览一个网站是,通常是从网站的首页进入,而网站为了更好的让用户找到期望看到的信息,都会按照一定的分类结构对数据进行组织,并提供一个列表对数据进行展示,分类一般都是网站的频道,列表通常是一个频道下的列表(数据索引)页面,由于数据众多,这个页面可能会有翻页,也可能还会进行子类的划分。所以,我们可以通过这个方式进行成批Url的配置。这个配置的过程,在网络矿工中需要配置导航规则、翻页规则。
对于网络采集器通常都是以上所讲的原理来实现数据采集的,当然也可能会有不同,欢迎各位对以上错误部分予以指正。
所以,需要配置一些规则来指导计算机的操作,这个规则的组合在网络矿工中我们称之为“采集任务”。通过上面的描述,我们知道采集任务中至少要包括网页地址、网页的拷贝数据的规则。
网页的地址很容易理解,每次我们打开一个网站时,首先都是要输入一个地址,这个地址称之为“Url”,输入Url后,我们就可以浏览一个页面了。
综上所述,我们也就可以理解网络采集器是如何采集数据的了。不过上面所讲,只是一个入门,因为我们只是在很常见常见的情况,指导计算机完成了一个页面数据的采集,这与我们实际的应用差距还很大,譬如:成批采集数据。后面我们还会逐步是深入进行讲解。
中级篇
前面已经所讲,我们已经指导计算机完成了一个网页数据的采集,但对于我们实际需要来讲,我们肯定不止采集一个页面,而是要采集N多页面,对于N多个页面而言,使用计算机自动执行才有意义。
a)导航规则:导航就是从一个页面进入另外一个页面的操作,网站的首页就是一个导航页,首页会有很多的栏目入口,点击就可以进入各个栏目,导航就是让计算机自动进入每个栏目,导航可以有很多,代表的就是从一个导航页进入一个栏目,再进入一个子栏目,再进入一个详细的页面,如果详细页还需要提取更多的数据,那么还需要导航进入,就好像我们在浏览数据一样,从一个页面进入另一个页面,再进入一个页面,每个导航页都带有了大量的需要采集数据的url,系统会自动获取这些url来实现成批数据的采集;
拷贝数据的规则:人工拷贝数据很简单,人工智能么,很容易识别需要采集的数据,但对于计算机,就会有些难度,计算机不知道想要采集什么数据?必须由人工告诉计算机采集数据的规则,譬如:我们需要采集文章标题,那么就需要告诉计算机如何在一个网页中识别文章标题,并准确的采集下来。在这个指导的过程中,有两种方式计算机可以理解(当然不排除还有其他的方式,譬如:计算机智能化):
顺便说一下登录采集吧,有些行业网站都是用户会员授权的,所以需要采集的数据也是需要会员身份的,会员必须登录后才能看到这些数据,在进行数据采集时,也是需要进行登录身份验证的,在进行登录采集时,通常系统都是记录cookie信息,在请求网页时一并发送,让网站进行身份验证,从而获取数据。所以,登录采集,就是记录cookie即可。
网站采集器如何实现网站数据采集
入门篇
网站采集,就是从网站页面中抽取指定的数据,人工方式就是打开网页然后开始Ctrl+C Ctrl+V的进行拷贝粘贴。人工方式采集数据最为准确,但效率最低。所以,期望计算机可以自动化的将人工操作执行,完成数据采集的工作。
计算机将人工的Ctrl+C Ctrl+V自动化执行,需要一定的指导操作,譬如:计算机需要打开那个页面,拷贝哪些信息,将拷贝的信息又要粘贴到哪里?这些都是人工操作时必须制定的操作,转化到计算机,也必须知道计算机这样来进行。
1、按照字符串获取的规则来指导计算机采集数据:一个网页是由浏览器对一个大字符串进行解析后展示的结果,这个大字符串就是网页源码,任何浏览器都可查看网页源码,打开网页源码后,在网页源码中通常(注意:是通常)都可以找到网页显示的内容,自然文章标题也可以找到,找到文章标题后,告诉计算机要采集这个标题数据,规则就是:从哪个字符开始获取到那个字符结束,举个简单例子:“<h1>今天的天气很好啊</h1>”这样一个字符串,我们要获取“今天的天气很好啊”,就是告诉计算机从“<h1>”后面开始获取到“</h1>”结束,将中间的字符采集下来,计算机就会对这个字符串进行识别,并按照定制的规则将所需要的数据获取。采集数据,就是要配置这样的规则来指导计算机将网页数据逐一采集下来;
了解了这个重要信息之后,我们就可以采用一些面向正则良好的信息来配置规则,甚至可以用正则通配符来提升采集数据的准确度,更甚可以自定义正则进行数据的匹配(一般都是高级用户来使用)。在此我们只是了解一下技术的构成,对实际的配置不做讲解了,这方面需要通过实际的案例不断的演练才可逐步掌握。
关于采集数据加工是一项非常有必要且很重要的功能,采集的数据并不一定是我们想要的最终数据,举个例子:采集的文章正文,通常都会带有<p></P><br/><span>等标签,这些标签用于在数据展示的时候对数据进行格式化操作,但对于我们应用时,可能并不需要这些标签,那么我们可以通过“去除网页符号”来自动将这些标签去掉。或者我们只将一些文字修饰的标签去掉,但保留文章的段落标记,这样的数据我们更容易使用。通过数据加工操作,我们可以将数据进行二次处理,直至其最大化的复合我们的应用条件。
下面我们在讲解一下采集数据规则匹配的一些技巧,和数据加工的操作,从而获取高质量的数据。
根据用户规则采集数据的核心是正则表达式匹配,正则表达式是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则在匹配(或者可以说是获取)字符串时是非常方便的,但其又很不容易理解,所以采集器才使用了界面化的配置方式让用户输入获取字符的起始位置和终止位置来自动构成一个正则表达式,进行数据的获取。不同的采集器核心对正则匹配的规则构成是不一样的,但以网络矿工为例,可以通过“掌握了以上的内容,可以说就已经可以完成独立的采集任务配置,并获取想要的高质量数据。但现实总是残酷的,当前众多网站为了可以获得更好的用户体验,或者说更好的保护自己,网站使用了众多的技术,这些技术的使用,无疑会给我们的采集工作带来巨大的障碍。在此我们对常见的一些问题进行简单的讲解。
2、有些Url并不一定可以通过一定可识别的规则来构成,那该如何?譬如:http://www.******.com/s.aspx?area=北京,这是一个带入了地区参数的Url,全国有众多的城市,总不能一个一个输入。针对这种Url,我们可以用字典参数,首先将全国城市数据获取(互联网有成批的这种数据文档,下载即可),建立在字典中,然后通过配置url完成这种貌似无规则url的构成,http://www.******.com/s.aspx?area={Dict:城市},这个参数表示了使用字典:城市的值,这样也可以完成成批Url的构成;
可能我们还会遇到另外一种情况,url配置正确,采集的数据也可以通过网页源码看到,但实际采集的时候,却无法采集到数据或出现了错误。这种情况会遇到,但却比较少见。这种情况有可能需要配置两个信息:cookie和user-agent;部分网站即便是匿名访问系统也会分配一个cookie信息用户身份识别,User Agent中文名为用户代理,简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断UA来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正agent都可以通过网络矿工嗅探器来进行查看获取信息。
对于N多个网页,我们不可能一个一个的去把Url告诉计算机,比如我们要采集上万个网页,难道要输入上万个Url,这也太不现实了。所以,我们只能找到这N多个网页的规则,用一种规则来让计算机自动解析完成N多个网页的构成。这种解析可以由集中方式:
1、按照一个可识别的规则解析,譬如:数字递增,字母递增或日期递增,举个例子: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的构成;
b)翻页规则:当数据量大的时候,网站会提供翻页操作,很典型的就是新闻列表页,会有很多新闻,第一页一直到第N页,所以,为了可以获取第1页以后的数据,我们还需要告诉计算机如何翻页,这个就是翻页规则,让计算机就像我们浏览网页一样,一页一页翻,直至最后一页,将数据获取。
上面讲到了如何成批的采集数据,在入门篇中也讲到了如何告诉计算机获取数据。但在实际的数据采集过程中,采集的数据质量可能并不一定可以满足我们的要求,譬如:带有了很多的无用网页信息,也可能我们在用规则匹配的时候会很难找到准确的起始采集的字符和终止采集的字符。
2、还有第二种方式来指导计算机采集数据:通常(注意:又是通常)情况网页的源码是一个XML文档。XML定义:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户构化的、具有标记识别的一种文档。这样,我们就可以通过一种方式来标记我们需要采集的数据,让计算机自动寻找并获取数据,这种方式也就是我们常见的可视化采集。可视化采集的核心是XPath信息,XPath是XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。用XPath来制定文档某个位置的数据,让计算机来采集,这样也实现了我们指导计算机采集数据的需求;
3、按照网站的数据组织结构来成批配置Url,我们浏览一个网站是,通常是从网站的首页进入,而网站为了更好的让用户找到期望看到的信息,都会按照一定的分类结构对数据进行组织,并提供一个列表对数据进行展示,分类一般都是网站的频道,列表通常是一个频道下的列表(数据索引)页面,由于数据众多,这个页面可能会有翻页,也可能还会进行子类的划分。所以,我们可以通过这个方式进行成批Url的配置。这个配置的过程,在网络矿工中需要配置导航规则、翻页规则。
对于网络采集器通常都是以上所讲的原理来实现数据采集的,当然也可能会有不同,欢迎各位对以上错误部分予以指正。
所以,需要配置一些规则来指导计算机的操作,这个规则的组合在网络矿工中我们称之为“采集任务”。通过上面的描述,我们知道采集任务中至少要包括网页地址、网页的拷贝数据的规则。
网页的地址很容易理解,每次我们打开一个网站时,首先都是要输入一个地址,这个地址称之为“Url”,输入Url后,我们就可以浏览一个页面了。
综上所述,我们也就可以理解网络采集器是如何采集数据的了。不过上面所讲,只是一个入门,因为我们只是在很常见常见的情况,指导计算机完成了一个页面数据的采集,这与我们实际的应用差距还很大,譬如:成批采集数据。后面我们还会逐步是深入进行讲解。
中级篇
前面已经所讲,我们已经指导计算机完成了一个网页数据的采集,但对于我们实际需要来讲,我们肯定不止采集一个页面,而是要采集N多页面,对于N多个页面而言,使用计算机自动执行才有意义。
a)导航规则:导航就是从一个页面进入另外一个页面的操作,网站的首页就是一个导航页,首页会有很多的栏目入口,点击就可以进入各个栏目,导航就是让计算机自动进入每个栏目,导航可以有很多,代表的就是从一个导航页进入一个栏目,再进入一个子栏目,再进入一个详细的页面,如果详细页还需要提取更多的数据,那么还需要导航进入,就好像我们在浏览数据一样,从一个页面进入另一个页面,再进入一个页面,每个导航页都带有了大量的需要采集数据的url,系统会自动获取这些url来实现成批数据的采集;
拷贝数据的规则:人工拷贝数据很简单,人工智能么,很容易识别需要采集的数据,但对于计算机,就会有些难度,计算机不知道想要采集什么数据?必须由人工告诉计算机采集数据的规则,譬如:我们需要采集文章标题,那么就需要告诉计算机如何在一个网页中识别文章标题,并准确的采集下来。在这个指导的过程中,有两种方式计算机可以理解(当然不排除还有其他的方式,譬如:计算机智能化):
顺便说一下登录采集吧,有些行业网站都是用户会员授权的,所以需要采集的数据也是需要会员身份的,会员必须登录后才能看到这些数据,在进行数据采集时,也是需要进行登录身份验证的,在进行登录采集时,通常系统都是记录cookie信息,在请求网页时一并发送,让网站进行身份验证,从而获取数据。所以,登录采集,就是记录cookie即可。
网站采集器如何实现网站数据采集
入门篇
网站采集,就是从网站页面中抽取指定的数据,人工方式就是打开网页然后开始Ctrl+C Ctrl+V的进行拷贝粘贴。人工方式采集数据最为准确,但效率最低。所以,期望计算机可以自动化的将人工操作执行,完成数据采集的工作。
计算机将人工的Ctrl+C Ctrl+V自动化执行,需要一定的指导操作,譬如:计算机需要打开那个页面,拷贝哪些信息,将拷贝的信息又要粘贴到哪里?这些都是人工操作时必须制定的操作,转化到计算机,也必须知道计算机这样来进行。
1、按照字符串获取的规则来指导计算机采集数据:一个网页是由浏览器对一个大字符串进行解析后展示的结果,这个大字符串就是网页源码,任何浏览器都可查看网页源码,打开网页源码后,在网页源码中通常(注意:是通常)都可以找到网页显示的内容,自然文章标题也可以找到,找到文章标题后,告诉计算机要采集这个标题数据,规则就是:从哪个字符开始获取到那个字符结束,举个简单例子:“<h1>今天的天气很好啊</h1>”这样一个字符串,我们要获取“今天的天气很好啊”,就是告诉计算机从“<h1>”后面开始获取到“</h1>”结束,将中间的字符采集下来,计算机就会对这个字符串进行识别,并按照定制的规则将所需要的数据获取。采集数据,就是要配置这样的规则来指导计算机将网页数据逐一采集下来;
了解了这个重要信息之后,我们就可以采用一些面向正则良好的信息来配置规则,甚至可以用正则通配符来提升采集数据的准确度,更甚可以自定义正则进行数据的匹配(一般都是高级用户来使用)。在此我们只是了解一下技术的构成,对实际的配置不做讲解了,这方面需要通过实际的案例不断的演练才可逐步掌握。
关于采集数据加工是一项非常有必要且很重要的功能,采集的数据并不一定是我们想要的最终数据,举个例子:采集的文章正文,通常都会带有<p></P><br/><span>等标签,这些标签用于在数据展示的时候对数据进行格式化操作,但对于我们应用时,可能并不需要这些标签,那么我们可以通过“去除网页符号”来自动将这些标签去掉。或者我们只将一些文字修饰的标签去掉,但保留文章的段落标记,这样的数据我们更容易使用。通过数据加工操作,我们可以将数据进行二次处理,直至其最大化的复合我们的应用条件。
下面我们在讲解一下采集数据规则匹配的一些技巧,和数据加工的操作,从而获取高质量的数据。
根据用户规则采集数据的核心是正则表达式匹配,正则表达式是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则在匹配(或者可以说是获取)字符串时是非常方便的,但其又很不容易理解,所以采集器才使用了界面化的配置方式让用户输入获取字符的起始位置和终止位置来自动构成一个正则表达式,进行数据的获取。不同的采集器核心对正则匹配的规则构成是不一样的,但以网络矿工为例,可以通过“掌握了以上的内容,可以说就已经可以完成独立的采集任务配置,并获取想要的高质量数据。但现实总是残酷的,当前众多网站为了可以获得更好的用户体验,或者说更好的保护自己,网站使用了众多的技术,这些技术的使用,无疑会给我们的采集工作带来巨大的障碍。在此我们对常见的一些问题进行简单的讲解。
2、有些Url并不一定可以通过一定可识别的规则来构成,那该如何?譬如:http://www.******.com/s.aspx?area=北京,这是一个带入了地区参数的Url,全国有众多的城市,总不能一个一个输入。针对这种Url,我们可以用字典参数,首先将全国城市数据获取(互联网有成批的这种数据文档,下载即可),建立在字典中,然后通过配置url完成这种貌似无规则url的构成,http://www.******.com/s.aspx?area={Dict:城市},这个参数表示了使用字典:城市的值,这样也可以完成成批Url的构成;
可能我们还会遇到另外一种情况,url配置正确,采集的数据也可以通过网页源码看到,但实际采集的时候,却无法采集到数据或出现了错误。这种情况会遇到,但却比较少见。这种情况有可能需要配置两个信息:cookie和user-agent;部分网站即便是匿名访问系统也会分配一个cookie信息用户身份识别,User Agent中文名为用户代理,简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断UA来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正agent都可以通过网络矿工嗅探器来进行查看获取信息。
对于N多个网页,我们不可能一个一个的去把Url告诉计算机,比如我们要采集上万个网页,难道要输入上万个Url,这也太不现实了。所以,我们只能找到这N多个网页的规则,用一种规则来让计算机自动解析完成N多个网页的构成。这种解析可以由集中方式:
1、按照一个可识别的规则解析,譬如:数字递增,字母递增或日期递增,举个例子: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的构成;