一种基于PetriNet的分布式行为模拟爬虫技术的制作方法

文档序号:13941023阅读:333来源:国知局

本发明涉及网络爬虫领域,尤其设计一种基于行为模拟,通过petrinet实现协同工作的分布式爬虫技术及其方法。



背景技术:

目前,随着大数据时代的到来,web2.0技术的广泛应用,传统的网络爬虫面对以社交媒体为主的数据爬取存在适应性的问题,如数据的可获得性、数据的有效性等问题。如何协调分布式爬虫之间的工作也是爬虫系统面临的一个问题,特别是在有限资源下的系统协同工作。



技术实现要素:

本发明提出一种基于petrinet的分布式行为模拟爬虫技术。这一技术包括两方面内容,一方面是采用基于用户行为模拟的爬虫技术,另一方面是采用petrinet来协同分布式爬虫系统之间的工作。基于用户行为模拟的爬虫技术一方面可以爬取到传统爬虫无法爬取的数据,另一方面还能提高爬取的数据质量,使得获取的数据准确性和有效性得到提高。通过模拟用户行为获得用户经常访问的数据。根据二八原理,在互联网中或一个网站里,用户往往只访问其中20%的数据,而剩下的80%的数据或页面对用户来说是没有用的或是不常访问的。同时基于用户行为模拟的爬虫系统能有效解决采用强反爬虫技术的网站数据爬取问题,解决传统爬虫算法无法正常获取的数据问题,如新浪微博中的内容。本发明另一方面采用petrinet来解决爬虫资源管理问题,如帐号、代理ip地址、cookie、文件等资源的合理有效分配,避免出现系统死锁问题,实现爬虫间相互协作通信和资源共享。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的典型程序流程图;

图2为本发明的整体结构框架;

图3为本发明的业务层定义样例图;

图4为本发明的weibo爬虫定义样例图;

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1:

如图1所示,用户模拟典型的工作流程如下:爬虫算法自动提交表单到网站并注册用户帐号,通过该帐号登录进入网站,访问网站页面并爬取相关数据,访问其他页面并下载数据,如搜索页面等,判断是否结束爬取,如果结束则退出,否则继续爬取。

如图2所示,爬虫系统自上而下分成三层,即业务层、中间层和定义层。业务层定义爬虫系统的业务流程;中间层将业务层任务分配到分布式爬虫节点中;定义层将中间层的爬虫节点任务进行细化,将具体的操作进行模块化。

如图3和图4所示,对图2中的定义的每一层我们采用petrinet来定义爬虫系统各层节点的结构。用pns=(p,t,i,o)来表示petri网结构,其中p={p1,p2,…pn},是爬虫系统资源的有限集,t={t1,t2,…tn}为爬虫系统操作,i=p×t→n(n为非负整数)表示输入函数,它定义了从p到t的有向弧的权的集合,o=t×p→n(n为非负整数)为输出函数,它定义了从t到p的有向弧的权的集合。i和o可以表示为下面的矩阵。

其中x为爬虫系统操作t的数目,y为资源集p的数目。ixy为从第y个资源集到第x个爬虫操作的弧权值,如果没有弧,则为0。oxy为从第x个爬虫操作到第y个资源集的弧权值,如果没有弧,则为0。称c=o-i为关联矩阵。

为了表示爬虫系统的资源初始配置,本发明在pns中引入标识状态,可以表示为pn={pns,m0}={p,t,i,o,m0}。其中m0为爬虫系统的资源初始配置,表示为m0=(m00,m10,…my0),y为资源集p的数目,my0为第y个资源的初始资源数目。

用·t表示t的所有输入资源集的集合,用|·t|表示t的输入资源集的个数,用t·表示t的爬虫执行操作后释放的资源,用|t·|表示t的所有释放资源个数。·p与p·表示资源集p的输入与输出操作,|·p|和|p·|表示资源集p的输入与输出操作个数。

爬虫系统执行操作的规则可以用数学语言表述为:某一操作t在标识m下使能,当且仅当对于任意的p∈·t:m(p)≥i(p,t)。在标识m下使能的变迁t的激发将产生新标识m’:对于任意的p∈p,m’(p)=m(p)-i(p,t)+o(p,t)。

基于用户行为模拟的爬虫系统在执行过程中有些操作需要模拟用户的操作时延,而有此操作并不需要时延,因此本发明在spn的基础上增加了立即变迁表示无时延操作,混合了立即变迁和延时变迁两种。立即变迁在变迁被使能时即能被触发,而延时变迁则需要经过一定时间间隔后才能激发。引入时延操作和立即操作后爬虫系统可表示为(p,t,i,o,m0,r,k,y),其中p表示资源的集合,t为操作集,i为输入函数,o为输出函数,m0为初始资源标识,r为延时操作的激发率,k为资源库的容量,y为操作的优先级函数。其中t可以分为两个子集ti和tt,即立即操作和延时操作。通过优先级函数y可以解决当两个或两个以上操作同时被一个库所使能时的冲突问题,一般优先级高的操作将获得该资源的令牌,同时立即操作的优先级一般高于延时操作。将爬虫系统中的资源与操作分别进行定义后,再通过图的形式表示出来即为图3和图4所示。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。

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