CN110209911A - 一种基于请求成功率的自适应休眠时间调节方法 - Google Patents
一种基于请求成功率的自适应休眠时间调节方法 Download PDFInfo
- Publication number
- CN110209911A CN110209911A CN201910475839.3A CN201910475839A CN110209911A CN 110209911 A CN110209911 A CN 110209911A CN 201910475839 A CN201910475839 A CN 201910475839A CN 110209911 A CN110209911 A CN 110209911A
- Authority
- CN
- China
- Prior art keywords
- time
- period
- cycle
- request
- dormancy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000005059 dormancy Effects 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000004622 sleep time Effects 0.000 claims description 6
- 230000003044 adaptive effect Effects 0.000 claims description 3
- 238000005457 optimization Methods 0.000 claims description 3
- 230000000737 periodic effect Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 description 5
- 230000033228 biological regulation Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000035484 reaction time Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000009193 crawling Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000001020 rhythmical effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于请求成功率的自适应休眠时间调节方法,包括如下步骤:1)检查1个周期内success和fail的和是否为10;2)计算请求周期成功率;3)计算该周期花费的时间;4)计算该周期的每个成功请求所花费的时间;5)将lastKey和lastVal记录为第一个请求周期的休眠时间值以及平均时间,然后将下一个请求周期的休眠时间设置为第一个请求周期休眠时间减gap毫秒,第一个请求周期结束,返回到步骤1);6)与第N‑1个周期比较;7)更新lastKey和lastVal,同时更新lastKey和lastVal,返回到步骤1);8)将下一个N+1周期的休眠时间设置为N‑1的休眠时间加gap毫秒,将lastVal记录为第N‑1个周期的休眠时间,本周期结束,返回到步骤1);9)继续运行。这种方法能提高爬虫运行的效率。
Description
技术领域
本发明涉及网络搜索爬虫技术,具体是一种基于请求成功率的自适应休眠时间调节方法。
背景技术
随着网络的迅速发展,网络成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战,爬虫在爬取目标网站时,目标网站有时会返回非期待的HTML文档,这就是目标网站的反爬措施。目标网站根据IP地址的访问频率做出判断,如果某一IP地址在一段时间内访问目标网站的频率过高,目标网站则会在一段时间对该IP地址进行限制,那么该IP地址下的所有用户都会被限制访问,所以要模拟用户在浏览器的操作,例如用户浏览一个页面需要停留5-7秒,那么爬虫程序也要模拟这个间隔时间来进行爬取,这样才不会过多的被目标网站反爬。
如何选取一个合理的间隔时间对爬虫运行的效率极其重要。假设目标网站当前的最佳文档返回的未知间隔时间为X,那么常见的间隔时间选择方法通常有两种:
(1)设置固定时间:通常为了爬虫的稳定,固定的时间会定为比较长,如定为4、5、6秒,也就是模拟用户在浏览器页面停留相应的间隔时间,再继续访问下一个链接。这种方式的优点是目标服务器返回错误页面的概率较小,基本可以获得一个较好的抓取效果,对应的缺点是设置固定的时间间隔,因为程序运行之中,间隔时间不可改变,当目标服务器有较大的负载能力时,如果固定时间大于X,那么爬虫程序没有获得一个最佳的间隔时间,会增加整个爬虫工作的运行时间,非常耗时;
(2)设置随机的动态间隔时间:在每次发起HTTP请求时,使用随机函数Ramdom生成一个间隔时间,这种方法的优点是可以根据随机函数的便利减少爬虫工作的时间,将随机函数生成的间隔时间分为三个区间,分别是高、中、低;当生成一个高间隔时间,那么可以缩短一定的时间,但不是最优间隔时间;当生成一个中间隔时间时,那么可以接近间隔时间X,获得一个较佳的间隔时间,这是随机生成动态时间的最佳状态;当生成一个低间隔时间,那么这已经小于目标网站的最佳间隔时间X,服务器可能会返回错误的文档,并记录该IP地址进一步做限制,这种方法的综合优点是可以缩短整个爬虫工作运行的一定时间,缺点是当随机时间较小时,可能会导致目标网站返回过多的错误页面,影响爬虫工作效率。
发明内容
本发明的目的是针对现有技术的不足,而提供一种基于请求成功率的自适应休眠时间调节方法。这种方法能提高爬虫运行的效率。
实现本发明目的的技术方案是:
一种基于请求成功率的自适应休眠时间调节方法,包括如下步骤:
1)在爬虫每完成一次请求时,检查success和fail的和是否为10,如果是,继续到步骤2),如果不是,转到步骤9),其中,success为爬虫某个请求周期请求成功的次数,fail为爬虫某个请求周期请求被反爬的次数,所述的请求周期定义为:每发起10个HTTP请求为1个周期;
2)计算请求周期成功率:所述请求周期的成功率定义为:用户发起HTTP请求时,目标服务器返回期待的HTML文档的个数为X,那么本周期的请求成功率则为x÷周期发起的HTTP请求数,也就是计算success除以10的结果,结果记为p,继续到步骤3);
3)计算该周期花费的时间:该周期花费的时间为sleepTime×10的结果,结果记为sum,继续到步骤4),其中,sleepTime为当前周期间隔时间;
4)计算该周期的每个成功请求所花费的时间:该周期的每个成功请求所花费的时间即sum÷success的结果,结果记为spendTime,继续到步骤5);
5)如在第一个请求周期内,将lastKey和lastVal记录为第一个请求周期的休眠时间值以及平均时间,然后将下一个请求周期的休眠时间设置为第一个请求周期休眠时间减gap毫秒,第一个请求周期结束,返回到步骤1),其中,lastKey为上一周期的间隔时间,lastVal为上一周期请求成功的平均所需时间,其中,gap为时间增量;
6)如果是第N个请求周期,则与上一个周期的spendTime进行比较,即与第N-1个周期比较,比较过程见步骤8);
7)如果第N个请求周期的效率值spendTime小于或等于第N-1个周期的平均时间,则该次自适应调节优化成功,更新lastKey和lastVal,将下一个N+1周期的休眠时间设置为第N个周期休眠时间减gap毫秒,同时更新lastKey和lastVal,本周期结束,返回到步骤1),其中,gap为时间增量;
8)如果第N个周期的效率值spendTime大于第N-1个周期的平均时间,则该次自适应调节优化失败,需要回退到上一个周期的休眠时间,即将下一个N+1周期的休眠时间设置为N-1的休眠时间加gap毫秒,将lastVal记录为第N-1个周期的休眠时间,本周期结束,返回到步骤1),其中,gap为时间增量;
9)如果success和fail的和小于10,表明在处于请求周期未完成阶段,继续运行。
本技术方案以N秒为起始休眠时间,将每10个HTTP请求作为一个探测周期,从上至下的探测目标服务器的反应时间,以每M毫秒的时间间距递减,探测一个最合理的休眠时间,在下一个周期以该休眠时间传入请求器,从而达到动态调节性,其中N和M可以由视情况而定。
本技术方案是一种对设置随机的动态间隔时间的方法,可以根据目标网站的实时响应情况,动态的修改间隔时间,得到较理想的间隔时间加速爬虫的工作时间。例如,当目标网站在A时间点时,可接受的响应时间范围是2000-3000毫秒,那么使用动态调节策略,就可以将爬虫设置的初始间断时间进入该目标服务器的响应范围,获取该时间段的最佳的间隔时间;再如,当目标服务器当前接受大量的用户访问,可接受的响应时间范围是4000-5000毫秒,使用动态调节策略,爬虫将从原来的2000-3000毫秒的间隔时间动态的改为4000-5000毫秒范围内,不会因为原来的较小的间隔时间遭到目标服务器的反爬。
这种方法能提高爬虫运行的效率。
附图说明
图1为实施例的方法流程示意图。
具体实施方式
下面结合附图和实施例对本发明的内容作进一步的说明,但不是对本发明的限定。
实施例:
参照图1,一种基于请求成功率的自适应休眠时间调节方法,其特征是,包括如下步骤:
1)在爬虫每完成一次请求时,检查success和fail的和是否为10,如果是,继续到步骤2),如果不是,转到步骤9),其中,success为爬虫某个请求周期请求成功的次数,fail为爬虫某个请求周期请求被反爬的次数,所述的请求周期在本例中定义为每发起10个HTTP请求为1个周期;
2)计算请求周期成功率:所述请求周期的成功率定义为:用户发起HTTP请求时,目标服务器返回期待的HTML文档的个数为X,那么本周期的请求成功率则为x÷周期发起的HTTP请求数,也就是计算success除以10的结果,结果记为p,继续到步骤3);
3)计算该周期花费的时间:该周期花费的时间为sleepTime×10的结果,结果记为sum,继续到步骤4),其中,sleepTime为当前周期间隔时间;
4)计算该周期的每个成功请求所花费的时间:该周期的每个成功请求所花费的时间即sum÷success的结果,结果记为spendTime,继续到步骤5);
5)如在第一个请求周期内,将lastKey和lastVal记录为第一个请求周期的休眠时间值以及平均时间,然后将下一个请求周期的休眠时间设置为第一个请求周期休眠时间减gap毫秒,第一个请求周期结束,返回到步骤1),其中,lastKey为上一周期的间隔时间,lastVal为上一周期请求成功的平均所需时间,其中,gap为时间增量;
6)如果是第N个请求周期,则与上一个周期的spendTime进行比较,即与第N-1个周期比较,比较过程见步骤8);
7)如果第N个请求周期的效率值spendTime小于或等于第N-1个周期的平均时间,则该次自适应调节优化成功,更新lastKey和lastVal,将下一个N+1周期的休眠时间设置为第N个周期休眠时间减gap毫秒,同时更新lastKey和lastVal,本周期结束,返回到步骤1),其中,gap为时间增量;
8)如果第N个周期的效率值spendTime大于第N-1个周期的平均时间,则该次自适应调节优化失败,需要回退到上一个周期的休眠时间,即将下一个N+1周期的休眠时间设置为N-1的休眠时间加gap毫秒,将lastVal记录为第N-1个周期的休眠时间,本周期结束,返回到步骤1),其中,gap为时间增量;
9)如果success和fail的和小于10,表明在处于请求周期未完成阶段,继续运行。
本例以N秒为起始休眠时间,将每10个HTTP请求作为一个探测周期,从上至下的探测目标服务器的反应时间,以每M毫秒的时间间距递减,探测一个最合理的休眠时间,在下一个周期以该休眠时间传入请求器,从而达到动态调节性,其中N和M可以由视情况而定。
具体地:
本例在爬虫程序中,以3089条URL链接作为测试总数,以3000毫秒的间隔时间启动爬虫程序,得到如表1的测试结果:
表1:
参照表1,可以得出:
(1)状态1:固定间隔时间:当起始间隔时间为3000毫秒,时间增量为0,也就是没有采用本例技术方案时,整个任务完成时间需要26分24秒,请求成功次数为1927次,本次爬取效率为62.38%即请求成功次数÷URL总数,每次成功请求所需时间0.8秒即所需时间秒数÷请求成功次数;
(2)状态2:采用本例技术方案之一,即设置起始间隔时间为3000毫秒,时间增量为150毫秒,整个任务完成时间需要24分43秒,相对状态1缩短1分41秒,请求成功次数为1978次,本次爬取效率为64.03%,每次成功请求所需时间0.74秒;
(3)状态2:采用本例技术方案之二即设置起始间隔时间为3000毫秒,时间增量为300毫秒,整个任务完成时间需要15分33秒,请求成功次数为2070次,本次爬取效率为67.01%,每次成功请求所需时间0.45秒;
(4)状态3:采用本例技术方案之三即设置起始间隔时间为3000毫秒,时间增量为250毫秒,整个任务完成时间需要24分09秒,请求成功次数为2414次,本次爬取效率为78.14%,每次成功请求所需时间0.6秒;
间隔时间变化状态:以时间增量为250毫秒为例,下面是在采用本例技术方案,每个周期间隔时间变化的情况,即变量lastKeyArr数组的内容,lastKeyArr为记录所有周期的间隔时间:
[3000, 2750, 2500, 2250, 2000, 1750, 1500, 1250, 1500, 1250, 1500, 1750,2000, 1750, 1500, 1250, 1500, 1750, 2000, 2250, 2000, 2250, 2000, 1750, 1500,1250, 1000, 750, 500];
对应的成功请求平均时间变化情况,即变量lastValArr数组的内容,lastValArr为记录所有周期对应的请求成功的平均所需时间:
[4285.714285714285, 3055.5555555555557, 2500.0, 2500.0,2222.222222222222, 1944.4444444444443, 1500.0, 1562.5, 1500.0, 1562.5,1666.6666666666667, 2187.5, 2000.0, 1944.4444444444443, 1500.0, 1562.5,1666.6666666666667, 1944.4444444444443, 2857.1428571428573, 2250.0, 2500.0,2500.0, 2222.222222222222, 1750.0, 1500.0, 1250.0, 1250.0, 833.3333333333334,500.0];
结论:经过多次的测试对比,可以看到,采用本例技术方案可以有效的减少爬虫任务的时间,减少1-2分钟,虽然在该测试调节下,时间缩短不明显,但效率均得到较好的提高,当在大规模的爬虫任务时,时间缩短会得到较好的体现,当时间增量为300毫秒时,可以看到时间缩短了10分钟左右,自适应调节策略可以根据目标服务器的响应情况,得到一个很好的加速效果,采用本例技术方案拥有较好的运行结果,可以提高、优化爬虫任务各个方面的指标。
Claims (1)
1.一种基于请求成功率的自适应休眠时间调节方法,其特征是,包括如下步骤:
1)在爬虫每完成一次请求时,检查success和fail的和是否为10,如果是,继续到步骤2),如果不是,转到步骤9),其中,success为爬虫某个请求周期请求成功的次数,fail为爬虫某个请求周期请求被反爬的次数,所述的请求周期定义为:每发起10个HTTP请求为1个周期;
2)计算请求周期成功率:所述请求周期的成功率定义为:用户发起HTTP请求时,目标服务器返回期待的HTML文档的个数为X,那么本周期的请求成功率则为x÷周期发起的HTTP请求数,也就是计算success除以10的结果,结果记为p,继续到步骤3);
3)计算该周期花费的时间:该周期花费的时间为sleepTime×10的结果,结果记为sum,继续到步骤4),其中,sleepTime为当前周期间隔时间;
4)计算该周期的每个成功请求所花费的时间:该周期的每个成功请求所花费的时间即sum÷success的结果,结果记为spendTime,继续到步骤5);
5)如在第一个请求周期内,将lastKey和lastVal记录为第一个请求周期的休眠时间值以及平均时间,然后将下一个请求周期的休眠时间设置为第一个请求周期休眠时间减gap毫秒,第一个请求周期结束,返回到步骤1),其中,lastKey为上一周期的间隔时间,lastVal为上一周期请求成功的平均所需时间,其中,gap为时间增量;
6)如果是第N个请求周期,则与上一个周期的spendTime进行比较,即与第N-1个周期比较,比较过程见步骤8);
7)如果第N个请求周期的效率值spendTime小于或等于第N-1个周期的平均时间,则该次自适应调节优化成功,更新lastKey和lastVal,将下一个N+1周期的休眠时间设置为第N个周期休眠时间减gap毫秒,同时更新lastKey和lastVal,本周期结束,返回到步骤1),其中,gap为时间增量;
8)如果第N个周期的效率值spendTime大于第N-1个周期的平均时间,则该次自适应调节优化失败,需要回退到上一个周期的休眠时间,即将下一个N+1周期的休眠时间设置为N-1的休眠时间加gap毫秒,将lastVal记录为第N-1个周期的休眠时间,本周期结束,返回到步骤1),其中,gap为时间增量;
9)如果success和fail的和小于10,表明在处于请求周期未完成阶段,继续运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910475839.3A CN110209911B (zh) | 2019-06-03 | 2019-06-03 | 一种基于请求成功率的自适应休眠时间调节方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910475839.3A CN110209911B (zh) | 2019-06-03 | 2019-06-03 | 一种基于请求成功率的自适应休眠时间调节方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209911A true CN110209911A (zh) | 2019-09-06 |
CN110209911B CN110209911B (zh) | 2023-03-28 |
Family
ID=67790279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910475839.3A Active CN110209911B (zh) | 2019-06-03 | 2019-06-03 | 一种基于请求成功率的自适应休眠时间调节方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209911B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040225644A1 (en) * | 2003-05-09 | 2004-11-11 | International Business Machines Corporation | Method and apparatus for search engine World Wide Web crawling |
US20150161257A1 (en) * | 2013-12-11 | 2015-06-11 | Ebay Inc. | Web crawler optimization system |
US20160127262A1 (en) * | 2014-10-31 | 2016-05-05 | The Nielsen Company (Us), Llc | Method and apparatus to throttle media access by web crawlers |
CN106570011A (zh) * | 2015-10-09 | 2017-04-19 | 北京京东尚科信息技术有限公司 | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 |
WO2017190641A1 (zh) * | 2016-05-03 | 2017-11-09 | 北京京东尚科信息技术有限公司 | 拦截爬虫的方法、装置、服务器终端以及计算机可读介质 |
CN107580052A (zh) * | 2017-09-07 | 2018-01-12 | 翼果(深圳)科技有限公司 | 自演进的网络自适应爬虫方法及系统 |
-
2019
- 2019-06-03 CN CN201910475839.3A patent/CN110209911B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040225644A1 (en) * | 2003-05-09 | 2004-11-11 | International Business Machines Corporation | Method and apparatus for search engine World Wide Web crawling |
US20150161257A1 (en) * | 2013-12-11 | 2015-06-11 | Ebay Inc. | Web crawler optimization system |
US20160127262A1 (en) * | 2014-10-31 | 2016-05-05 | The Nielsen Company (Us), Llc | Method and apparatus to throttle media access by web crawlers |
CN106570011A (zh) * | 2015-10-09 | 2017-04-19 | 北京京东尚科信息技术有限公司 | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 |
WO2017190641A1 (zh) * | 2016-05-03 | 2017-11-09 | 北京京东尚科信息技术有限公司 | 拦截爬虫的方法、装置、服务器终端以及计算机可读介质 |
CN107580052A (zh) * | 2017-09-07 | 2018-01-12 | 翼果(深圳)科技有限公司 | 自演进的网络自适应爬虫方法及系统 |
Non-Patent Citations (6)
Title |
---|
SAMIKSHA M等: ""Smart Approach to Crawl Web Interfaces Using a Two Stage Framework of Crawler"" * |
XIN WANG等: ""Hidden web crawling for SQL injection detection"" * |
YUANSHU JIANG等: ""Offensive and defensive strategy of web crawler"" * |
李俊丽;: "基于Linux的python多线程爬虫程序设计" * |
胡俊潇;陈国伟;: "网络爬虫反爬策略研究" * |
陈言;颜晨阳;: "一种网络爬虫的带缓存非阻塞异步域名解析器模型及其性能分析" * |
Also Published As
Publication number | Publication date |
---|---|
CN110209911B (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Park et al. | Analysis of uniformly and linearly distributed mass dampers under harmonic and earthquake excitation | |
AU2002344294B2 (en) | Method and system for page prefabrication | |
Olston et al. | Recrawl scheduling based on information longevity | |
EP2315120B1 (en) | Calibration of resource allocation during parallel processing | |
US7599917B2 (en) | Ranking search results using biased click distance | |
US9940391B2 (en) | System, method and computer readable medium for web crawling | |
US20100023513A1 (en) | User-sensitive pagerank | |
US20040107319A1 (en) | Cache management system and method | |
Panayiotou et al. | mPERSONA: personalized portals for the wireless user: An agent approach | |
US20020138467A1 (en) | Method for effective indexing of partially dynamic documents | |
JP5866996B2 (ja) | アプリケーションサーバ | |
JP2011504272A (ja) | 適応分割によるクエリ並列実行のためのリソース割り当て | |
GB2363952B (en) | A method of balancing load among mirror servers | |
JP2011258235A (ja) | クリックディスタンスを用いて検索結果をランク付けするシステムおよび方法 | |
NZ566532A (en) | Ranking functions using document usage statistics | |
TW200416565A (en) | Method and apparatus for evaluating a proposed solution to a constraint problem | |
WO2006046486A1 (ja) | 資源管理システム、資源情報提供方法、及び、プログラム | |
CN105354258B (zh) | 一种更新网站数据缓存的装置及方法 | |
CN110209911A (zh) | 一种基于请求成功率的自适应休眠时间调节方法 | |
CN115412501A (zh) | 基于Flink的多层次协同重配置流处理系统及其处理方法 | |
Lama et al. | Efficient server provisioning with end-to-end delay guarantee on multi-tier clusters | |
US9665636B2 (en) | Data partioning based on end user behavior | |
US8271651B1 (en) | Methods and systems for regulating resource usage | |
Kamali et al. | Dynamic data allocation with replication in distributed systems | |
US8060503B2 (en) | Ranking nodes for session-based queries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240621 Address after: 541004 Room 603, 14 #, Guilin Creative Industry Park, Guimo Avenue, Qixing District, Guilin City, Guangxi Zhuang Autonomous Region Patentee after: GUILIN LANGANG TECHNOLOGY CO.,LTD. Country or region after: China Address before: 541004 1 Jinji Road, Qixing District, Guilin, the Guangxi Zhuang Autonomous Region Patentee before: GUILIN University OF ELECTRONIC TECHNOLOGY Country or region before: China |