分布式爬虫方法及系统与流程
未命名
09-10
阅读:122
评论:0

1.本发明涉及爬虫领域,具体涉及一种分布式爬虫方法及系统。
背景技术:
2.分布式爬虫的出现和发展,主要得益于以下几个方面:
3.1.云计算技术:云计算架构提供了分布式、高可用和可伸缩性的基础设施,可以实现对爬虫程序的部署和调度。
4.2.分布式计算技术:分布式计算架构基于集群和并行计算,可以有效地处理大规模数据和任务,并提高数据抓取和处理的效率。
5.3.机器学习技术:机器学习技术可以自动地进行特征学习和分类模型训练,可以帮助实现对目标网站进行自动识别和分类。
6.4.大数据技术:大数据技术可以协助实现数据处理、存储和分析,可以有效地支撑分布式爬虫的数据抓取和处理工作。
7.现有爬虫技术,如cn109829094a公开的一种分布式爬虫系统,括:url读写模块、url抓取模块、文档解析模块和持久化模块;url读写模块,用于基于mapreduce的map端从输入流中读取url,将url写入到输出流中;url抓取模块,用于将写入到输出流中的url作为访问地址,根据预设的网络访问模式,基于map端下载访问地址对应的目标文档;文档解析模块,用于基于map端,按照预设方式提取目标文档中的目标数据;持久化模块,用于基于map端,按照预设路径和持久化规则将目标数据存储到hadoop分布式文件系统中。该方案将分布式爬虫系统模块化,通过在模块之间传输数据来进行信息交互,提高了系统的可扩展性、可用性和可维护性,提高了系统的调度能力。
8.但该方案未对url进行处理,读取效率不高,仅通过模块之间传输数据来进行信息交互,以提高调度能力,该方式调度能力不高,并且该方案仅是常规的分布式爬虫,抓取数据时不够灵活。
技术实现要素:
9.本发明的目的是提供一种分布式爬虫方法及系统,提高了数据爬取的效率、数据爬取的调度能力以及灵活性。
10.本发明采取如下技术方案实现上述目的,分布式爬虫方法,包括:
11.步骤1、采集url数据,并将爬取过的url数据保存到url数据集合中,对采集的url进行哈希计算,若计算结果不属于所述url数据集合,则将该url加入任务节点,否则抛弃该url;
12.步骤2、采用神经网络对url进行蒸馏,对超出预设长度的url进行截取,将蒸馏后的结果作为特定特征;
13.步骤3、建立dqn模型,将所述特定特征输入至dqn模型中,根据子节点吞吐量动态分配爬取任务,进行数据抓取;
14.步骤4、通过知识图谱在数据抓取过程中对偏好数据进行挖掘,包括识别抓取文本中的实体,将识别到的实体与知识库中的实体进行链接,为实体标注上统一的id,在实体链接的基础上,从抓取文本中提取实体之间的关系,同时在抓取时构建url与实体间联系,选择偏好实体,对需抓取url进行排序,使得抓取目标实体关联url的优先级更高。
15.进一步的是,该方法还包括:步骤5、根据子节点爬取到的数据,将其存储到目标数据库中,采用关系数据库进行存储,并采用哈希计算对目标文本数据去重,再将数据放入前端进行展示。
16.进一步的是,步骤1中,该方法还包括:增加爬虫代理池,每次爬取随机从代理池中,选取一个代理节点进行爬取,并对代理池中代理服务器加入时延限制。
17.进一步的是,步骤2中,采用rnn模型对url进行蒸馏,具体包括:在基本的rnn结构下,加入一层隐藏层,对url特征进行蒸馏,隐藏层作为全连接层,输出维度为1的向量,用于提取url特征。
18.进一步的是,首先给出dqn模型输入的系统载荷以及任务参数,所述任务参数包括cpu利用率、内存使用率、队列任务长度、任务处理时延以及url蒸馏结果;
19.然后采用dqn模型对目标数据进行无监督学习,使用经验池对多条经验进行保存,所述dqn模型中包括当前值网络与目标值网络,当前值网络用于预测估计的q值,目标值网络用于预测现实的q值,目标值网络的计算方式为:targetq=r+γ*max(s',a
*
;θ),γ表示学习率;
20.当前值网络的计算为:predictq=q(s,a;θ),s为当前状态,a为动作,s'为下一状态,a
*
为选择的动作,r为以往的网络参数;计算损失采用如下公式:
21.通过神经网络的梯度反向传播来更新当前值网络的所有参数,具体包括:初始化dqn模型,输入当前目标子节点状态,并通过dqn获得所有动作q值,选择一个动作输入到环境中,获得新状态和奖励,然后计算目标值网络,计算损失,并更新网络,最后将该动作状态(s,a,r,s')加入到记忆单元中,r表示奖励。
22.分布式爬虫系统,所述系统包括:
23.数据采集模块,用于采集url数据,并将爬取过的url数据保存到url数据集合中,对采集的url进行哈希计算,若计算结果不属于所述url数据集合,则将该url加入任务节点,否则抛弃该url;
24.数据蒸馏模块,用于采用神经网络对url进行蒸馏,对超出预设长度的url进行截取,将蒸馏后的结果作为特定特征;
25.数据抓取模块,用于建立dqn模型,将所述特定特征输入至dqn模型中,根据子节点吞吐量动态分配爬取任务,进行数据抓取;
26.数据挖掘模块,用于通过知识图谱在数据抓取过程中对偏好数据进行挖掘,包括识别抓取文本中的实体,将识别到的实体与知识库中的实体进行链接,为实体标注上统一的id,在实体链接的基础上,从抓取文本中提取实体之间的关系,同时在抓取时构建url与实体间联系,选择偏好实体,对需抓取url进行排序,使得抓取目标实体关联url的优先级更高。
27.进一步的是,该系统还包括数据去重模块,所述数据去重模块用于根据子节点爬
取到的数据,将其存储到目标数据库中,采用关系数据库进行存储,并采用哈希计算对目标文本数据去重,再将数据放入前端进行展示。
28.进一步的是,数据采集模块还用于增加爬虫代理池,每次爬取随机从代理池中,选取一个代理节点进行爬取,并对代理池中代理服务器加入时延限制。
29.进一步的是,数据蒸馏模块具体用于,采用rnn模型对url进行蒸馏,具体包括:在基本的rnn结构下,加入一层隐藏层,对url特征进行蒸馏,隐藏层作为全连接层,输出维度为1的向量,用于提取url特征。
30.进一步的是,数据抓取模块具体用于,首先给出dqn模型输入的系统载荷以及任务参数,所述任务参数包括cpu利用率、内存使用率、队列任务长度、任务处理时延以及url蒸馏结果;
31.然后采用dqn模型对目标数据进行无监督学习,使用经验池对多条经验进行保存,所述dqn模型中包括当前值网络与目标值网络,当前值网络用于预测估计的q值,目标值网络用于预测现实的q值,目标值网络的计算方式为:targetq=r+γ*max(s',a
*
;θ),γ表示学习率;
32.当前值网络的计算为:predictq=q(s,a;θ),s为当前状态,a为动作,s'为下一状态,a
*
为选择的动作,r为以往的网络参数;计算损失采用如下公式:
33.通过神经网络的梯度反向传播来更新当前值网络的所有参数,具体包括:初始化dqn模型,输入当前目标子节点状态,并通过dqn获得所有动作q值,选择一个动作输入到环境中,获得新状态和奖励,然后计算目标值网络,计算损失,并更新网络,最后将该动作状态(s,a,r,s')加入到记忆单元中,r表示奖励。
34.本发明的有益效果为:
35.本发明利用url蒸馏技术,使得url特征更容易被提取,将其作为特征向量放入调度管理模型,能够让更容易爬取该目标url的子节点获得该任务,从而提高爬取效率;采用dqn模型进行爬取任务的调度管理,能够提高调度管理能力;基于知识图谱的偏好数据挖掘加强,使得目标偏好更容易被爬虫优先抓取,极大地提高了数据爬取的灵活性。
附图说明
36.图1为本发明实施例提供的分布式爬虫方法流程图;
37.图2为本发明实施例提供的rnn模型结构示意图;
38.图3为本发明实施例提供的rnn模型中隐藏层结构示意图;
39.图4为本发明实施例提供的dqn模型结构示意图;
40.图5为本发明实施例提供的一对多存储关系示意图。
具体实施方式
41.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.本发明提供一种分布式爬虫方法,如图1所示,包括:
43.s1、数据采集
44.采集url数据,并将爬取过的url数据保存到url数据集合中,对采集的url进行哈希计算,若计算结果不属于所述url数据集合,则将该url加入任务节点,否则抛弃该url。哈希计算如下:t=hash(url),t为计算结果。
45.同时加入爬虫代理池,每次爬取随机从代理池中,选取一个代理节点,进行爬取。并对代理池中代理服务器加入时延限制,防止被目标服务器封禁。
46.s2、数据蒸馏
47.数据蒸馏,即url蒸馏,由于目标网站会会对部分爬虫进行封禁,所以采用对url蒸馏方式,保证具有相似性的url能够被更容易爬取的节点爬取到。采用神经网络对url进行蒸馏,并对过长url特征进行截取,最后把蒸馏后的结果,作为特定特征输入到dqn网络中。url蒸馏模型训练,采用rnn模型,由于url在长度上,对结果的影响,后面更长的url对学习的结果影响更少,所以适合采用rnn模型进行蒸馏。
48.采用的rnn模型如图2所示,在基本的rnn结构下,加入一层隐藏层,从而对url特征进行蒸馏。训练时的url蒸馏模型,(x1,x2,x3,...xn),表示url序列,模型输入长度为512,输出为512。
49.隐藏层结构如图3所示,logvar、mu作为全连接层,输出为维度1的向量,用于提取url特征,首先利用logvar获得计算因子std,计算过程如下式:std=e
logvar/2
;最终隐藏层计算结果为z,其计算如下:z=randn(std.size())*std+mu,训练时,首先对url长度进行截断,假设训练数据url为x=[x1,x2,x3,...,xn],x
*
=[x1,x2,x3,...,x
512
],长度大于512字符的进行截断,小于512字符的用字符’\0’进行扩充。训练的label为训练的url,表示为y=[y1,y2,y3,...,y
512
],所以传递损失为:loss(xi,yi)=-w[yilogxi+(1-yi)log(1-xi)],w为超参数,可以不用设置。在预测时,将蒸馏后的结果z作为一项输入维度参与后续计算。
[0050]
s3、数据抓取
[0051]
建立dqn模型,将所述特定特征输入至dqn模型中,根据子节点吞吐量动态分配爬取任务,进行数据抓取。
[0052]
将url分配给不同的爬虫程序进行抓取,从而实现分布式爬虫。具体包括:采用dqn模型进行调度,建立dqn模型,根据子节点吞吐量等有效信息动态分配爬取任务,首先给出模型输入的系统载荷及任务参数,参数如下表:
[0053][0054]
采用dqn模型对目标数据进行无监督学习,使用经验池对多条经验(s,a,r,s')进行保存,其中s表示状态(如上述参数列表),a表示动作(即选择某一个爬虫节点),r表示价值(价值的计算通过处理时延来进行表示),s'表示下一状态。其中,价值r的计算方式为:假
设时延阈值为ε则分配目标子节点i,价值r为,r=log(t
i-ε).
[0055]
dqn模型如图4所示,图中的当前值网络用于预测估计的q值,目标值网络用于预测现实的q值,目标值网络与当前值网络相同,只是目标值网络的参数是当前值网络以前的参数。
[0056]
目标值网络用于预测现实的q值,目标值网络的计算方式为:targetq=r+γ*max(s',a
*
;θ),γ表示学习率;
[0057]
当前值网络的计算为:predictq=q(s,a;θ),表示获得状态s下选择动作a的q值,s为当前状态,a为动作,s'为下一状态,a
*
为选择的动作,r为以往的网络参数;计算损失采用如下公式:
[0058]
通过神经网络的梯度反向传播来更新当前值网络的所有参数。并且每隔n时间步长,拷贝当前值网络的所有参数到目标值网络中。
[0059]
具体过程包括:
[0060]
1.初始化dqn,输入当前目标子节点状态,并通过dqn获得所有动作q值。
[0061]
2.选择一个动作(选择某一个爬虫节点)输入到环境中,获得新状态和奖励r。
[0062]
3.计算目标值网络。
[0063]
4.计算损失。
[0064]
5.更新网络。
[0065]
6.将该动作状态(s,a,r,s')加入到记忆单元中。
[0066]
s4、数据挖掘
[0067]
通过知识图谱在数据抓取过程中对偏好数据进行挖掘,使得爬虫更具有偏向性,具体包括:
[0068]
1.实体识别:识别文本中的实体。通常使用自然语言处理技术实现,如自然语言分割、词性标注、命名实体识别等,这里利用stanfordcorenlp对爬取内容进行实体识别。
[0069]
2.实体链接:将识别到的实体与知识库中的实体进行链接,为实体标注上统一的id。实体链接利用solr来实现。
[0070]
3.关系抽取:在实体链接的基础上,从文本中提取实体之间的关系。关系抽取需要使用图分析和自然语言处理技术。其中图分析技术可以用于处理实体之间的关系,并将其转化为图形式。自然语言处理技术可以用于文本的语义分析、句法分析和语法分析等。利用opennre来建立关系模型。
[0071]
完成知识图谱建立后,在前端对抓取数据的知识图谱进行展示。同时在抓取时构建url与知识网络实体间联系,采用键值对形式存储(存储实体关系-url)键值对,为一对多关系,如图5所示。
[0072]
最后通过选择偏好实体,对需抓取url进行排序,使得抓取目标实体关联url的优先级更高。
[0073]
在本发明的一种实施例中,本发明分布式爬虫方法还包括s5、:存储与分析,根据子节点爬取到的数据,将其存储到目标数据库中,采用关系数据库进行存储,并采用hash方式对目标文本数据去重。最后,再将数据放入前端进行展示。
[0074]
本发明还提供了一种分布式爬虫系统,所述系统包括:
[0075]
数据采集模块,用于采集url数据,并将爬取过的url数据保存到url数据集合中,对采集的url进行哈希计算,若计算结果不属于所述url数据集合,则将该url加入任务节点,否则抛弃该url;
[0076]
数据蒸馏模块,用于采用神经网络对url进行蒸馏,对超出预设长度的url进行截取,将蒸馏后的结果作为特定特征;
[0077]
数据抓取模块,用于建立dqn模型,将所述特定特征输入至dqn模型中,根据子节点吞吐量动态分配爬取任务,进行数据抓取;
[0078]
数据挖掘模块,用于通过知识图谱在数据抓取过程中对偏好数据进行挖掘,包括识别抓取文本中的实体,将识别到的实体与知识库中的实体进行链接,为实体标注上统一的id,在实体链接的基础上,从抓取文本中提取实体之间的关系,同时在抓取时构建url与实体间联系,选择偏好实体,对需抓取url进行排序,使得抓取目标实体关联url的优先级更高。
[0079]
在本发明的一种实施例中,该系统还包括数据去重模块,所述数据去重模块用于根据子节点爬取到的数据,将其存储到目标数据库中,采用关系数据库进行存储,并采用哈希方式对目标文本数据去重,再将数据放入前端进行展示。
[0080]
在本发明的一种实施例中,数据采集模块还用于增加爬虫代理池,每次爬取随机从代理池中,选取一个代理节点,进行爬取,并对代理池中代理服务器加入时延限制。
[0081]
在本发明的一种实施例中,数据蒸馏模块具体用于,采用rnn模型对url进行蒸馏,具体包括:在基本的rnn结构下,加入一层隐藏层,对url特征进行蒸馏,隐藏层作为全连接层,输出维度为1的向量,用于提取url特征。
[0082]
在本发明的一种实施例中,数据抓取模块具体用于,首先给出dqn模型输入的系统载荷以及任务参数,所述任务参数包括cpu利用率、内存使用率、队列任务长度、任务处理时延以及url蒸馏结果;
[0083]
然后采用dqn模型对目标数据进行无监督学习,使用经验池对多条经验进行保存,所述dqn模型中包括当前值网络与目标值网络,当前值网络用于预测估计的q值,目标值网络用于预测现实的q值,目标值网络的计算方式为:targetq=r+γ*max(s',a
*
;θ),γ表示学习率;
[0084]
当前值网络的计算为:predictq=q(s,a;θ),s为当前状态,a为动作,s'为下一状态,a
*
为选择的动作,r为以往的网络参数;计算损失采用如下公式:
[0085]
通过神经网络的梯度反向传播来更新当前值网络的所有参数,具体包括:初始化dqn模型,输入当前目标子节点状态,并通过dqn获得所有动作q值,选择一个动作输入到环境中,获得新状态和奖励,然后计算目标值网络,计算损失,并更新网络,最后将该动作状态(s,a,r,s')加入到记忆单元中,r表示奖励。
[0086]
综上所述,本发明极大地提高了数据爬取的效率、数据爬取的调度能力以及灵活性。
技术特征:
1.分布式爬虫方法,其特征在于,包括:步骤1、采集url数据,并将爬取过的url数据保存到url数据集合中,对采集的url进行哈希计算,若计算结果不属于所述url数据集合,则将该url加入任务节点,否则抛弃该url;步骤2、采用神经网络对url进行蒸馏,对超出预设长度的url进行截取,将蒸馏后的结果作为特定特征;步骤3、建立dqn模型,将所述特定特征输入至dqn模型中,根据子节点吞吐量动态分配爬取任务,进行数据抓取;步骤4、通过知识图谱在数据抓取过程中对偏好数据进行挖掘,包括识别抓取文本中的实体,将识别到的实体与知识库中的实体进行链接,为实体标注上统一的id,在实体链接的基础上,从抓取文本中提取实体之间的关系,同时在抓取时构建url与实体间联系,选择偏好实体,对需抓取url进行排序,使得抓取目标实体关联url的优先级更高。2.根据权利要求1所述的分布式爬虫方法,其特征在于,该方法还包括:步骤5、根据子节点爬取到的数据,将其存储到目标数据库中,采用关系数据库进行存储,并采用哈希计算对目标文本数据去重,再将数据放入前端进行展示。3.根据权利要求1所述的分布式爬虫方法,其特征在于,步骤1中,该方法还包括:增加爬虫代理池,每次随机从代理池中,选取一个代理节点进行爬取,并对代理池中代理服务器加入时延限制。4.根据权利要求1所述的分布式爬虫方法,其特征在于,步骤2中,采用rnn模型对url进行蒸馏,具体包括:在基本的rnn结构下,加入一层隐藏层,对url特征进行蒸馏,隐藏层作为全连接层,输出维度为1的向量,用于提取url特征。5.根据权利要求1所述的分布式爬虫方法,其特征在于,步骤3中,根据子节点吞吐量动态分配爬取任务具体包括:首先给出dqn模型输入的系统载荷以及任务参数,所述任务参数包括cpu利用率、内存使用率、队列任务长度、任务处理时延以及url蒸馏结果;然后采用dqn模型对目标数据进行无监督学习,使用经验池对多条经验进行保存,所述dqn模型中包括当前值网络与目标值网络,当前值网络用于预测估计的q值,目标值网络用于预测现实的q值,目标值网络的计算方式为:targetq=r+γ*max(s',a
*
;θ),γ表示学习率;当前值网络的计算为:predictq=q(s,a;θ),s为当前状态,a为动作,s'为下一状态,a
*
为选择的动作,r为以往的网络参数;计算损失采用如下公式:通过神经网络的梯度反向传播来更新当前值网络的所有参数,具体包括:初始化dqn模型,输入当前目标子节点状态,并通过dqn获得所有动作q值,选择一个动作输入到环境中,获得新状态和奖励,然后计算目标值网络,计算损失,并更新网络,最后将该动作状态(s,a,r,s')加入到记忆单元中,r表示奖励。6.分布式爬虫系统,用于实现如权利要求1-5任意一项所述的分布式爬虫方法,其特征在于,所述系统包括:数据采集模块,用于采集url数据,并将爬取过的url数据保存到url数据集合中,对采集的url进行哈希计算,若计算结果不属于所述url数据集合,则将该url加入任务节点,否
则抛弃该url;数据蒸馏模块,用于采用神经网络对url进行蒸馏,对超出预设长度的url进行截取,将蒸馏后的结果作为特定特征;数据抓取模块,用于建立dqn模型,将所述特定特征输入至dqn模型中,根据子节点吞吐量动态分配爬取任务,进行数据抓取;数据挖掘模块,用于通过知识图谱在数据抓取过程中对偏好数据进行挖掘,包括识别抓取文本中的实体,将识别到的实体与知识库中的实体进行链接,为实体标注上统一的id,在实体链接的基础上,从抓取文本中提取实体之间的关系,同时在抓取时构建url与实体间联系,选择偏好实体,对需抓取url进行排序,使得抓取目标实体关联url的优先级更高。7.根据权利要求6所述的分布式爬虫系统,其特征在于,该系统还包括数据去重模块,所述数据去重模块用于根据子节点爬取到的数据,将其存储到目标数据库中,采用关系数据库进行存储,并采用哈希计算对目标文本数据去重,再将数据放入前端进行展示。8.根据权利要求6所述的分布式爬虫系统,其特征在于,数据采集模块还用于增加爬虫代理池,每次随机从代理池中,选取一个代理节点进行爬取,并对代理池中代理服务器加入时延限制。9.根据权利要求6所述的分布式爬虫系统,其特征在于,数据蒸馏模块具体用于,采用rnn模型对url进行蒸馏,具体包括:在基本的rnn结构下,加入一层隐藏层,对url特征进行蒸馏,隐藏层作为全连接层,输出维度为1的向量,用于提取url特征。10.根据权利要求6所述的分布式爬虫系统,其特征在于,数据抓取模块具体用于,首先给出dqn模型输入的系统载荷以及任务参数,所述任务参数包括cpu利用率、内存使用率、队列任务长度、任务处理时延以及url蒸馏结果;然后采用dqn模型对目标数据进行无监督学习,使用经验池对多条经验进行保存,所述dqn模型中包括当前值网络与目标值网络,当前值网络用于预测估计的q值,目标值网络用于预测现实的q值,目标值网络的计算方式为:targetq=r+γ*max(s',a
*
;θ),γ表示学习率;当前值网络的计算为:predictq=q(s,a;θ),s为当前状态,a为动作,s'为下一状态,a
*
为选择的动作,r为以往的网络参数;计算损失采用如下公式:通过神经网络的梯度反向传播来更新当前值网络的所有参数,具体包括:初始化dqn模型,输入当前目标子节点状态,并通过dqn获得所有动作q值,选择一个动作输入到环境中,获得新状态和奖励,然后计算目标值网络,计算损失,并更新网络,最后将该动作状态(s,a,r,s')加入到记忆单元中,r表示奖励。
技术总结
本发明涉及爬虫领域,具体涉及一种分布式爬虫方法及系统,提高了数据爬取的效率、数据爬取的调度能力以及灵活性。方案包括采集URL数据,并将爬取过的URL数据保存到URL数据集合中,对采集的URL进行哈希计算,若计算结果不属于所述URL数据集合,则将该URL加入任务节点,否则抛弃该URL;采用神经网络对URL进行蒸馏,对超出预设长度的URL进行截取,将蒸馏后的结果作为特定特征;建立DQN模型,将所述特定特征输入至DQN模型中,根据子节点吞吐量动态分配爬取任务,进行数据抓取;通过知识图谱在数据抓取过程中对偏好数据进行挖掘。本发明适用于数据爬取。数据爬取。数据爬取。
技术研发人员:李月 范运乾 刘靖椿 毛利飞 李艺博 田丹 刘丹 田淼 吴少智
受保护的技术使用者:中储粮成都储藏研究院有限公司
技术研发日:2023.06.25
技术公布日:2023/9/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/