基于可配置规则的网站数据搜索方法与流程

文档序号:14720459发布日期:2018-06-17 13:20阅读:137来源:国知局

本发明涉及垂直搜索领域,具体说是基于可配置规则的网站数据搜索方法。



背景技术:

垂直搜索引擎是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。垂直搜索是相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。其特点就是\"专、精、深\",且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。目前,在垂直搜索领域,由于网站千差万别,要抓取不同网站的数据,则需要为各个网站写一个(或者几个)爬虫程序,因而还没有办法做到一套程序通吃所有的网站。



技术实现要素:

针对上述技术问题,本发明提供基于可配置规则的网站数据搜索方法,该方法是基于解析规则来进行搜索的,只要为一个网站配置一套采集的规则,便可以在不修改搜索引擎系统的情况下,实现对该网站的内容进行采集的目的.因而达到的复用的目的,可以大大的节省从事这一领域工作的企业的开发成本及维持成本.。

本发明采用的技术方案为:基于可配置规则的网站数据搜索方法,其按以下步骤进行:

(1)为待搜索的网站配置入口规则、链接规则和详情规则;

(2)解析入口规则,得到网站的入口url、与入口规则关联的链接规则及访问该网站时的参数;

(3)解析上述与入口规则关联的链接规则,得到一个用于解析该网站页面的链接规则语法及与该链接规则相关联的详情规则;

(4)解析上述与链接规则相关联的详情规则,得到若干个用于采集该网站页面上内容的详情规则语法,从而采集页面上的内容。

作为优选,所述链接规则为一层或多层结构;执行链接规则之后,得到目标链接的url;如果目标链接的url是详情的url,则链接规则采用一层结构;如果目标链接的url不是详情的url,则链接规则采取多层结构进行递归执行。

作为优选,所述链接规则语法包括CSS匹配规则、目标节点规则和节点属性规则,其中CSS匹配规则是应用CSS选择器语法选择需要的HTML节点,得到一个节点列表;目标节点规则用于对上述节点列表进行进一步的匹配,得到一组包含链接的节点;节点属性规则用于对上述包含链接的节点的属性进行匹配,得到一组url列表。

作为优选,所述链接规则语法还包括CSS前过滤规则,CSS前过滤规则是应用CSS选择器语法选择出HTML中不需要的节点。

作为优选,所述链接规则语法还包括CSS后过滤规则,CSS后过滤规则是应用CSS选择器语法选择不需要的节点,并且与CSS匹配规则选中的节点进行比较,如果节点相同,则去掉CSS匹配规则选择出来的节点;如果节点是CSS匹配规则选中的节点的子节点,则在CSS匹配规则选中的节点中删除掉相应的子节点。

作为优选,所述链接规则语法还包括正则表达式规则,正则表达式规则是对上述包含链接的节点进行进一步的修饰。

作为优选,每一个所述详情规则语法由若干个采集子规则组成,每一个采集子规则对应于采集网站上的某一块文本信息。

作为优选,每一个所述采集子规则包括CSS匹配规则,利用CSS匹配规则匹配html上的节点,并将匹配到的节点包含的文本作为最终结果。

作为优选,每一个所述采集子规则还包括CSS后过滤规则,利用CSS选择器语法选择出不需要的节点,并与CSS匹配规则匹配的节点进行比较,如果节点相同,则去掉CSS匹配规则选择出来的节点。

作为优选,每一个所述采集子规则还包括正则表达式规则,利用正则表达式规则对上述节点包含的文本做进一步的修饰。

从上可知,该方法可以把开发人员从编写爬虫系统中解放出来,开发人员只需要编写针对不同站点的配置规则便可以实现对一个网站的数据采集,而编写站点规则相比较于直接编写爬虫系统简单得多,同时维护也方便很多,可以为企业大大的节省开发成本和维护成本。

具体实施方式

下面将详细说明本发明,在此本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。

基于可配置规则的网站数据搜索方法,其按以下步骤进行:首先,为待搜索的网站配置入口规则、链接规则和详情规则;在解析入口规则,得到网站的入口url、与入口规则关联的链接规则及访问该网站时的参数;入口url用于控制搜索引擎访问该站点的入口,这个入口通常是网站的首页,但也有可能是网站的一个特定的页面,是搜索引擎访问该网站的第一个页面的URL;与入口规则关联的链接规则用于告诉搜索引擎使用哪个链接规则来采集该页面的链接,入口规则与链接规则是一对多的关系,所以这里可以配置多条链接规则,当配置多条链接规则时,搜索引擎按配置规则的顺序迭代执行;在实施过程中可设置访问该网站时的参数主要是以下这些:访问该站时是否使用代理服务器,设置请求的访问频率,设置每次运行次数,设置访问站点时的请求头以及一些与业务相关的用于标识网站的性质的参数等。

接着,解析上述与入口规则关联的链接规则,得到一个用于解析该网站页面的链接规则语法及与该链接规则相关联的详情规则;链接规则语法是链接规则的核心内容,搜索引擎通过解析该规则便可以知道怎么去获取该页面上的链接;由于完成解析之后搜索引擎会得到一组用于进一步采集信息的url列表,为了采集这些url里面的具体的内容,便需要用下一级的详情规则来解析.入口规则与链接规则是一对多的关系,所以这里可以配置多条链接规则,当配置多条链接规则时,搜索引擎按配置规则的先后顺序迭代执行,直到有一个规则解析成功才终止。

链接规则的作用在于告诉采集程序如何去采集网站上的链接,采集程序通过解析该规则便可以采集网站上的链接.本申请采用一种分层的结构设计该规则,一个链接规则可以有多层的结构.一个链接规则可能拥有一层或者多层的结构.每执行完一层规则之后,搜索引擎便会得到一组目标链接的url,如果目标链接的url是详情的url,我们只要一层的结构就可以,这样就把url丢给详情规则去采集.如果目标url不是详情的url,我们便要采取多层的结构来递归的执行.当我们配置的了多层的结构,那么搜索引擎会把上一层的目标url列表中的每个url当作新的入口,继续使用下一层的链接规则来对其匹配,结果将得到一组新的目标url,直到最后一层才结束。

先说明一下,一个链接规则语法由以下几个部分组成:CSS前过滤规则,CSS匹配规则,CSS后过滤规则,正则表达式规则,目标节点规则,节点属性规则.各规则的作用如下:CSS前过滤规则:应用CSS选择器语法选择出HTML中我们不想要的节点,并对HTML的DOM中去掉;CSS匹配规则:应用CSS选择器语法选择出我们所需要的HTML节点;CSS后过滤规则:应该CSS选择器语法选择出我们不需要的节点,并且与上一步中选中的节点进行比较,如果和上一步中的节点相同,则去掉上一步中选择出来的节点,如果是上一步中节点的子节点;则把上一步中选择出来的节点中删除掉相应的子节点.目标节点规则:继续对经过过滤后剩余的节点应用CSS选择器语法规则选择出相应的节点,比如<A>标签节点等;节点属性规则:对上一步中的选择出来的节点应用该属性规则,选择出节点上的属性对应的URL,比如A节点上的HREF属性;正则表达式规则:应用正则表达式规则,进行进一步的处理修饰.比如需要对一个链接的节一个部分进行替换等情况.我们的采集引擎读取到这一层的链接规则之后,会按以下的顺序来采集页面上的链接:

1、利用CSS前过滤规则过滤掉我们不想要的html内容,如果没有配置CSS前过滤规则就略过这一步聚;

2、利用CSS匹配规则去匹配html上的节点,结果应该是一个节点列表;

3、利用CSS后过滤规则过滤掉上一步结果中我们不想要的节点,如果没有配置CSS后过滤规则就略过这一步聚;

4、利用目标节点规则对上一步中的结果进行进一步的匹配,结果将得到一组包含链接的节点;

5、利用节点属性规则对上一步的所有包含链接的节点的属性进行匹配,最后将得到一组url列表;

6、利用正则表达式规则对上一步的结果进行进一步的修饰,如果没有就略过这一步。

对于需要配置多层的链接规则的网站,我们就需要用到多层的语法设计:

{{第一层规则}}{{第二层规则}}….{{第N层规则}},按这种方式我们便可以实现无限层次的规则并接起来。

接着,解析上述与链接规则相关联的详情规则,得到若干个用于采集该网站页面上内容的详情规则语法,从而采集页面上的内容。详情规则的作用是告诉采集程序如何去采集网站上的文本信息,采集程序通过该规则便可以实现对网站的信息的采集.具体来说每一个详情规则语法由若干个采集子规则组成,每一个采集子规则对应于采集网站上的某一块文本信息。具体要配置几个采集子规则视具体的业务而定。比如需要采集新闻的话,通常需要配置以下几个采集子规则:标题子规则,正文子规则,作者子规则,发布时间子规则等。所以配置详情规则就是配置一个或者多个采集子规则,然后把这些采集子规则合并起来就可以了。一个采集子规则由以下3个部分组成:CSS匹配规则,CSS过滤规则,正则表达式规则。他们的作用分别如下:CSS匹配规则:应用CSS选择器语法选择出我们所需要的HTML节点;CSS后过滤规则:应用CSS选择器语法选择出我们不需要的节点,并且与上一步中选中的节点进行比较,如果和上一步中的节点相同,则去掉上一步中的选择;正则表达式规则:应用正则表达式规则进行进一步的处理修饰,比如需要对一个链接的节一个部分进行替换等情况。我们的采集引擎读取到这一层的规则之后,会按以下的顺序来采集页面上的信息:

1、利用CSS匹配规则去匹配html上的节点,结果应该是一个节点列表;

2、利用CSS后过滤规则过滤掉上一步结果中我们不想要的节点,如果没有配置CSS后过滤规则就略过这一步聚;

3、判断是否还有配置正则表达式规则,如果没有配置正则表达式规则,将上面匹配到的节点包含的文本作为最终的结果;如果配置了正则表达式,则对节点包含的文本做进一步的修饰,并把修饰后的结果做为最终结果。

下面以采集新浪网页面的新闻为例,说明我们的规则如何配置:

1、配置入口规则。

入口URL设置为新浪的首页:http://www.sina.com.cn

配置下一条关联的链接规则的ID:1(此ID以系统实现分配的为准,此处填写1只为举例用)

2、配置链接规则。

链接规则语法设置,此处我们需要采集首页上的所有的新闻链接,经过观察我们发现新闻链接的URL基本都是以:数字.shtml结尾的.所以我们的规则可以这么配置:

CSS匹配规则可以设置为:body

意义是根据CSS的语法把整个文档的BODY节点做为我们的目标,因为所有的链接都被BODY节点包含了。

CSS后过滤规则可以设置为:a:not(a[href~=\\d{4}.shtml])

根据CSS的语法规则,这一条规则的意义是过滤掉BODY标签链接的URL不包含数据+.shtml链接.这样我们能确保结果都是新闻的链接,而不是二级目录等非新正文的链接。

目标节点规则可以设置为:a

根据CSS的语法规则,就是BODY节点中的所有的a标签做为目录节点。

节点属性规则可以设置为:href

意义是选取a标签中的href属性作为结果url。

配置下一条关联的采集规则的ID:2(此ID以系统实现分配的为准,此处填写2只为举例用)

3、配置详情规则.

假设我们需要采集的内容是新闻的标题,正文,发布时间这几个字段,如果上一步采集到的新闻包含有这个URL:http://news.sina.com.cn/c/2015-11-30/doc-ifxmainy1476425.shtml,这里我们就以采集这个URL为例,我们可以按如下的方式配置采集规则:

标题CSS匹配规则:h1

根据CSS语法,这一条规则是选取一个标签为h1的节点.由于这一条CSS匹配规则已经能够采集到新闻的标题,我们不需要再匹配标题的过滤规则及正则匹配规则了。

正文CSS匹配规则:#artibody

根据CSS语法,这一条规则选取一个ID为artibody的节点.同样地,由于这一条CSS规则已经能够采集到新闻的正文了,我们也不需要另外配置正文的过滤规则及正则匹配规则了。

发布时间CSS匹配规则:#navtimeSource

根据CSS语法,这一条规则选取一个ID为navtimeSource的节点.由于该节点包含有时间的信息,我们便采集到了发布时间,我们不再需要另外配置发布时间的过滤规则及正则匹配规则了。

最后:Created:2015-12-01周二16:37

Emacs24.4.1(Orgmode8.2.10)

Validate

以上对本发明实施例所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说明只适用于帮助理解本发明实施例的原理;同时,对于本领域的一般技术人员,依据本发明实施例,在具体实施方式以及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1