一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种网页爬虫的爬取时间频率选择方法及装置与流程

2022-10-22 07:00:40 来源:中国专利 TAG:


1.本发明属于机器学习技术领域,尤其涉及一种网页爬虫的爬取时间频率选择方法及装置。


背景技术:

2.随着互联网技术的日益发展,互联网上公开的数据越来越多,其中有很多数据恰恰是日常工作学习中非常需要的,如果全部手工的整理这些公开数据比较费时、费力而且容易出错,所以经常会选择使用爬虫技术来自动化提取网页中我们需要的数据。
3.然而对于很多公司而言,数据是它们的核心能力,如果这些数据在互联网环境中被免费、批量的抓走,会导致公司丧失了核心竞争力;所以大多数网站都会制定相应的反爬虫策略。爬虫工程师经常因为反爬虫策略导致数据爬取任务进行不下去,很多复杂网站的爬虫任务需要经验丰富的工程师来编写,工作强度较大,网站数据的爬取效率较低。


技术实现要素:

4.本发明的主要目的在于克服现有技术的缺点与不足,提供一种网页爬虫的爬取时间频率选择方法及装置,该方法能够自动选择针对目标网站的最优爬取时间频率,根据该最优爬取时间频率进行数据的爬取,提高了爬虫爬取数据的效率,减轻了技术人员的工作强度。
5.根据本发明的一个方面,本发明提供了一网页爬虫的爬取时间频率选择方法,所述方法包括以下步骤:
6.s1:判断目标网站是否有反爬策略,若是,则获取所述目标网站的爬取时间频率临界值;
7.s2:构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选择模型;
8.s3:调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率。
9.优选地,所述判断目标网站是否有反爬策略包括:
10.通过请求url的方式按照多个不同的时间频率爬取数据,并持续预设时间;获取响应结果,根据所述响应结果中的http状态码或所述响应结果中是否含有正常数据判断所述目标网站是否有反爬策略。
11.优选地,所述获取所述目标网站的爬取时间频率临界值包括:
12.从目标网站的ip地址库中选取一个没有被封的ip,以多个逐渐递增的不同时间频率爬取数据,并记录每次请求的执行结果,直至ip被封,得到爬取时间频率的临界值。
13.优选地,所述构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选择模型包括:
14.通过域名查询服务获取目标网站的域名对应的服务端ip列表,将服务端ip地址、爬取时间频率、爬取状态作为训练数据,对模型进行训练;
15.所述模型为梯度提升树gbdt模型,将训练数据中的服务端ip地址、爬取时间频率作为特征,爬取状态作为标签,训练所述gbdt模型,得到所述时间频率选择模型。
16.优选地,所述调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率包括:
17.调用所述时间频率选择模型,根据所述爬取时间频率临界值,利用二分查找法输出最优的爬取时间频率。
18.根据本发明的另一个方面,本发明还提供了一种网页爬虫的爬取时间频率选择装置,所述装置包括:
19.判断模块,用于判断目标网站是否有反爬策略,若是,则获取所述目标网站的爬取时间频率临界值;
20.训练模块,用于构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选择模型;
21.输出模块,用于调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率。
22.优选地,所述判断模块判断目标网站是否有反爬策略包括:
23.通过请求url的方式按照多个不同的时间频率爬取数据,并持续预设时间;获取响应结果,根据所述响应结果中的http状态码或所述响应结果中是否含有正常数据判断所述目标网站是否有反爬策略。
24.优选地,所述判断模块获取所述目标网站的爬取时间频率临界值包括:
25.从目标网站的ip地址库中选取一个没有被封的ip,以多个逐渐递增的不同时间频率爬取数据,并记录每次请求的执行结果,直至ip被封,得到爬取时间频率的临界值。
26.优选地,所述训练模块构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选择模型包括:
27.通过域名查询服务获取目标网站的域名对应的服务端ip列表,将服务端ip地址、爬取时间频率、爬取状态作为训练数据,对模型进行训练;
28.所述模型为梯度提升树gbdt模型,将训练数据中的服务端ip地址、爬取时间频率作为特征,爬取状态作为标签,训练所述gbdt模型,得到所述时间频率选择模型。
29.优选地,所述输出模块调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率包括:
30.调用所述时间频率选择模型,根据所述爬取时间频率临界值,利用二分查找法输出最优的爬取时间频率。
31.有益效果:本发明通过判断目标网站是否有反爬策略,在是的情况下获取所述目标网站的爬取时间频率临界值,以及利用训练数据对模型进行训练,得到时间频率选择模型,调用所述时间频率选择模型,输出最优的爬取时间频率,能够自动选择针对目标网站的最优爬取时间频率,根据该最优爬取时间频率进行数据的爬取,提高了爬虫爬取数据的效率,减轻了技术人员的工作强度。
32.通过参照以下附图及对本发明的具体实施方式的详细描述,本发明的特征及优点将会变得清楚。
附图说明
33.图1是网页爬虫的爬取时间频率选择方法流程图;
34.图2是网页爬虫的爬取时间频率选择系统示意图。
具体实施方式
35.下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
36.实施例1
37.图1是网页爬虫的爬取时间频率选择方法流程图。如图1所示,本实施例提供了一网页爬虫的爬取时间频率选择方法,所述方法包括以下步骤:
38.s1:判断目标网站是否有反爬策略,若是,则获取所述目标网站的爬取时间频率临界值。
39.s2:构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选择模型;
40.s3:调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率。
41.通过本实施例的方法,能够自动选择针对目标网站的最优爬取时间频率,根据该最优爬取时间频率进行数据的爬取,提高了爬虫爬取数据的效率,减轻了技术人员的工作强度。
42.优选地,所述判断目标网站是否有反爬策略包括:
43.通过请求url的方式按照多个不同的时间频率爬取数据,并持续预设时间;获取响应结果,根据所述响应结果中的http状态码或所述响应结果中是否含有正常数据判断所述目标网站是否有反爬策略。
44.具体地,用户在确定了需要爬取的网站后,将网站url或数据接口url进行输入。
45.基于规则访问目标url,判断该网站url是否有反爬虫策略。使用python3的requests库来请求url,分别以每秒请求1次、10次、100次、1000次的频率来爬取数据,持续1小时,如果数据一直能正常获取则判定该网站基本没有反爬策略,返回时间频率为1000次/秒。若响应的结果中response.code不为200(http状态码异常),或响应的结果中response.content没有正常数据返回,则说明该网站有反爬策略。
46.优选地,所述获取所述目标网站的爬取时间频率临界值包括:
47.从目标网站的ip地址库中选取一个没有被封的ip,以多个逐渐递增的不同时间频率爬取数据,并记录每次请求的执行结果,直至ip被封,得到爬取时间频率的临界值。
48.具体地,若http状态码异常或者请求后无任何响应了,则说明网站有反爬策略。此时需要探究以什么样的频率爬取数据时,目标网站会封堵ip地址。首先从ip库中选取一个没有被封的ip,重新以每秒1次、2次、3次...的频率逐渐递增去执行1小时爬取数据,并记录每次请求的执行结果,直到ip被封,此时就是爬取频率的最大值。最终的结果可能是x次/秒(x的值可能是50、100、200等),则该网站的爬取频率在1次/秒~x次/秒之间。
49.优选地,所述构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选
择模型包括:
50.通过域名查询服务获取目标网站的域名对应的服务端ip列表,将服务端ip地址、爬取时间频率、爬取状态作为训练数据,对模型进行训练;
51.所述模型为梯度提升树gbdt模型,将训练数据中的服务端ip地址、爬取时间频率作为特征,爬取状态作为标签,训练所述gbdt模型,得到所述时间频率选择模型。
52.具体地,由于现在大部分网站都是集群部署并且做了dns加速策略,所以访问一个url时,每次访问的服务端ip可能是不一样的,可以通过使用alibaba域名查询服务来获取到域名对应的服务端ip列表。
53.通过上述步骤已经获取到爬取频率的最大值,由于服务端的硬件情况可能不一致、网络会存在波动等问题,如果直接用最大值去爬取数据,大多数情况下爬虫都会不稳定,此时需要通过模型算法来确定一个稳定的爬取频率。
54.本实施例用二分查找的方法访问若干次目标ip,并记录每次的服务端ip地址、时间频率、爬取状态(是否被封)等信息作为二分类的训练数据。
55.假设步骤3获取到的频率最大值x为10,某目标网站的服务端ip列表为39.156.66.10、39.156.66.11、39.156.66.12,则训练集数据为:
56.服务端ip地址爬取频率(n次/秒)是否被封39.156.66.1050,否39.156.66.1070,否39.156.66.10101,是39.156.66.1150,否39.156.66.1171,是39.156.66.11101,是39.156.66.1251,是39.156.66.1271,是39.156.66.12101,是
57.将数据集中的服务端ip地址、时间频率作为特征,爬取状态(是否被封0和1)作为标签,基于gbdt(梯度提升树)去做二分类。使用python及pandas库进行gbdt二分类算法的实现。
58.机器学习可以解决很多问题,其中最为重要的两个是回归与分类。gbdt可用于回归问题,相对logistic regression仅能用于线性回归,gbdt能用于线性回归和非线性回归,gbdt的适用面非常广。gbdt也可用于二分类问题(设定阈值,大于阈值为正例,反之为负例)。
59.本项目中具体的算法实现如下:
60.1)参数设置
61.学习率:learning_rate=0.1
62.迭代次数:n_trees=5
63.树的深度:max_depth=3
64.2)初始化弱学习器
[0065][0066]
其中,arg min就是使后面这个式子达到最小值时的变量的取值;x为样本变量,在这里特指ip地址与爬取频率所结合得到的特征值;c为所有训练样本标签值的均值,在这里也就是指所有训练数据集中是否被封的结果的均值,n表示数据集划分成n个单元,yi表示为预测值。
[0067]
损失函数l为平方损失,因为平方损失函数是一个凸函数,直接求导,得到导数:
[0068][0069]
令导数等于0,得到:
[0070][0071]
初始化时,c取值为所有训练样本标签值(是否被封堵)的均值。此时得到初始学习器f0(x)。
[0072]
3)多次迭代
[0073]
由于我们设置了迭代次数:n_trees=5,这里的m=5。此处m为迭代次数或迭代轮数,m=5表示共迭代5次。
[0074]
计算负梯度,根据上文损失函数为平方损失时,负梯度就是残差残差。
[0075]
此时将残差作为样本的真实值来训练弱学习器。
[0076]
服务端ip地址爬取频率(n次/秒)标签值39.156.66.1050.87539.156.66.107-0.53239.156.66.1010-0.24339.156.66.1150.74439.156.66.117-0.65439.156.66.1110-0.26239.156.66.1250.91239.156.66.127-0.81639.156.66.1210-0.533
[0077]
4)最终的强学习器为:
[0078][0079]
其中,γ
jm
为拟合的步长,指的是每棵树的预测值;i(x∈r
jm
)表示指示函数,若x∈r
jm)
则i=1,否则i=0,r
jm
为指的是第m棵子树所有的划分方法中叶子节点预测值的集合,也就是第m棵回归树可能达到的预测值。其中j的范围是1,2,3,

,j。
[0080]
在模型训练完成后,本实施例中还可以利用测试数据对模型进行验证,具体过程
包括:
[0081]
构建测试数据集,组合服务端ip地址39.156.66.12与每秒1次到1000次的时间频率,形成测试数据集,利用测试数据对模型进行验证。
[0082]
服务端ip地址爬取频率(n次/秒)模型结果39.156.66.12500 39.156.66.12750 39.156.66.12875 39.156.66.12... [0083]
优选地,所述调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率包括:
[0084]
调用所述时间频率选择模型,根据所述爬取时间频率临界值,利用二分查找法输出最优的爬取时间频率。
[0085]
具体地,用二分查找的方法获取模型预测结果。取中间值判断是否被封,若没有被封则继续取中间值直到获取到被封为止。以最大爬取时间频率临界值为1000次/秒为例,过程如下:
[0086]
1)、如取1-1000的中间值每秒500次,模型返回结果是不封;
[0087]
2)、那么继续取500-1000的中间值750次每秒,获取模型结果,
[0088]
3)、若还是不封则继续取875次每秒获取模型结果;
[0089]
4)、如果此时模型返回的结果是被封,则继续以750-875为最小最大值,根据二分查询从大到小的顺序获取不被封的爬取频率;
[0090]
5)、获取到的结果既是最终的爬取频率,此时返回的该频率既是该装置的最终结果,最终以选取封堵与不封堵的临界点的时间作为爬虫爬取时间频率进行返回。
[0091]
本实施例通过判断目标网站是否有反爬策略,在是的情况下获取所述目标网站的爬取时间频率临界值,以及利用训练数据对模型进行训练,得到时间频率选择模型,调用所述时间频率选择模型,输出最优的爬取时间频率,能够自动选择针对目标网站的最优爬取时间频率,根据该最优爬取时间频率进行数据的爬取,提高了爬虫爬取数据的效率,减轻了技术人员的工作强度。
[0092]
实施例2
[0093]
图2是网页爬虫的爬取时间频率选择系统示意图。如图2所示,本实施例还提供了一种网页爬虫的爬取时间频率选择装置,所述装置包括:
[0094]
判断模块201,用于判断目标网站是否有反爬策略,若是,则获取所述目标网站的爬取时间频率临界值;
[0095]
训练模块202,用于构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选择模型;
[0096]
输出模块203,用于调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率。
[0097]
优选地,所述判断模块201判断目标网站是否有反爬策略包括:
[0098]
通过请求url的方式按照多个不同的时间频率爬取数据,并持续预设时间;获取响应结果,根据所述响应结果中的http状态码或所述响应结果中是否含有正常数据判断所述
目标网站是否有反爬策略。
[0099]
优选地,所述判断模块201获取所述目标网站的爬取时间频率临界值包括:
[0100]
从目标网站的ip地址库中选取一个没有被封的ip,以多个逐渐递增的不同时间频率爬取数据,并记录每次请求的执行结果,直至ip被封,得到爬取时间频率的临界值。
[0101]
优选地,所述训练模块202构建训练数据,利用所述训练数据对模型进行训练,得到时间频率选择模型包括:
[0102]
通过域名查询服务获取目标网站的域名对应的服务端ip列表,将服务端ip地址、爬取时间频率、爬取状态作为训练数据,对模型进行训练;
[0103]
所述模型为梯度提升树gbdt模型,将训练数据中的服务端ip地址、爬取时间频率作为特征,爬取状态作为标签,训练所述gbdt模型,得到所述时间频率选择模型。
[0104]
优选地,所述输出模块203调用所述时间频率选择模型,根据所述爬取时间频率临界值,输出最优的爬取时间频率包括:
[0105]
调用所述时间频率选择模型,根据所述爬取时间频率临界值,利用二分查找法输出最优的爬取时间频率。
[0106]
本实施例2中各个模块所实现的功能的具体过程与实施例1中的各个步骤的实施过程相同,在此不再赘述。
[0107]
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献