CN111125488A - 一种主机负荷智能感知的定向爬虫方法及系统 - Google Patents
一种主机负荷智能感知的定向爬虫方法及系统 Download PDFInfo
- Publication number
- CN111125488A CN111125488A CN201911353456.5A CN201911353456A CN111125488A CN 111125488 A CN111125488 A CN 111125488A CN 201911353456 A CN201911353456 A CN 201911353456A CN 111125488 A CN111125488 A CN 111125488A
- Authority
- CN
- China
- Prior art keywords
- crawled
- host
- crawler
- url
- crawling
- 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.)
- Pending
Links
Images
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
-
- 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/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
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)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种主机负荷智能感知的定向爬虫方法及系统,方法包括:(1)打开浏览器并定位到待爬取站点,通过模拟浏览器行为实现页面的跳转以及读取;(2)根据设置的检索条件自动生成需要爬取页面的URL集合;(3)根据爬虫任务的重要性和紧迫程度对URL集合进行优先级分级,划分为若干个子集合,为每个子集合分配一个或多个线程来处理;(4)每个线程在进行数据爬取时所采用的方法为:A、对于URL中待爬取的条目,抓取相应内容的关键字词或标题,进行语义分析,并根据语义分析结果筛选爬取内容;B、记录当前页面响应时间,并与历史页面响应时间比较,从而感知主机/网络的繁忙程度,动态地调整爬取速度。本发明爬虫效率更高,且具有自律性,有利于构建良好的互联网生态。
Description
技术领域
本发明涉及数据爬虫方法,尤其涉及一种主机负荷智能感知的定向爬虫方法及系统。
背景技术
在大数据和深度学习等领域,需要大量的数据以支撑研究。这就需要运用网络爬虫技术在浩瀚的互联网中抓取所需要的数据。通过爬虫技术可以快速获取特定领域的相关数据,并根据需求过滤筛选数据。网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,又被称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
现有的大部分爬虫通过HTTP协议下载静态HTML文本信息并根据HTML文本结构提取数据,例如常见的python库:requests库,beautiful soup库等。但是现在许多站点采用javascript以及ajax技术动态加载网页,这就使得采用传统爬取技术路线爬取这些网页困难重重。
在实践中由于多数爬虫缺乏自律,都想在最短的时间抓取最多的数据,影响了网站的正常工作,导致大量站点采取了反爬取措施,并在Robots协议中设置了许多规定,甚至许多站点在数据交互时都采用了验证或进行了加密,这给正常合理的数据爬取也带来了很多不必要的障碍,恶化了整个互联网生态。
发明内容
发明目的:本发明针对现有技术存在的问题,提供一种主机负荷智能感知的定向爬虫方及系统法,本发明爬虫效率更高,且具有自律性,有利于构建良好的互联网生态。
技术方案:本发明所述的主机负荷智能感知的定向爬虫方法包括:
(1)打开浏览器并定位到待爬取站点,通过模拟浏览器行为实现页面的跳转以及读取;
(2)根据设置的检索条件自动生成需要爬取页面的URL集合;
(3)根据爬虫任务的重要性和紧迫程度对URL集合进行优先级分级,按照优先级将URL集合划分为若干个子集合,为每个子集合分配一个或多个线程来处理;
(4)根据任务优先级和主机/网络的繁忙程度,对线程的运行情况进行调整,其中,每个线程在进行数据爬取时所采用的方法为:
A、对于URL中待爬取的条目,抓取相应内容的关键字词或标题,进行语义分析,并根据语义分析结果筛选爬取内容;
B、记录当前页面响应时间,并与历史页面响应时间比较,从而主动感知主机/网络的繁忙程度,动态地调整爬虫的爬取频度和数据量。
进一步的,步骤(1)中所述打开浏览器并定位到待爬取站点是通过采用selenium测试工具实现。
进一步的,步骤(1)中,模拟浏览器的行为是通过Xpath路径进行HTML element定位,定位成功后调用selenium测试工具的webdriver模块相应函数模拟浏览器的行为。
进一步的,步骤(1)中,若待爬取站点需要登陆,则定位到登陆界面,并通过程序执行自动登陆,使浏览器自动记录cookie。
进一步的,步骤(2)中所述URL集合通过以下方式生成:
通过待爬取站点自带检索引擎产生的URL,分析出URL中键值对的含义,得到自定义URL中的参数,生成需要爬取页面的URL集合。
进一步的,步骤(4)中所述对线程的运行情况进行调整的具体方法为:在主机/网络繁忙的时候,不分配爬取任务或只进行优先级高于阈值的任务,而将主要的采集工作放在主机/网络的闲暇时间进行。
进一步的,步骤A中,所述根据语义分析结果筛选爬取内容,具体为:通过语义分析,过滤掉不符合爬取要求的数据,仅爬取符合爬取要求的数据。
进一步的,步骤B中,所述动态地调整爬虫的爬取频度和数据量,具体为:若感知到当前时间段主机/网络繁忙,则放缓爬取速度,若当前时间段主机/网络闲暇,则提高爬取速度。
本发明所述的主机负荷智能感知的定向爬虫系统,包括处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
有益效果:本发明提采用selenium测试工具模拟浏览器行为进行数据爬取,可以根据需求进行精准的定向数据爬取,减少无效数据的传输,尽量降低网站主机额外的工作负荷并提升抓取的效率;其也能够感知网络流量情况从而动态调整爬取速度来适应网络情况从而避免给服务器带来过大压力,根据爬虫任务的重要性和紧迫程度对URL集合即待爬取内容进行分级,在主机/网络繁忙的时候不分配爬取任务或只进行非常重要且紧迫的任务,而将主要的采集工作放在主机/网络的闲暇时间进行。同时运用了多线程技术并在每一线程中都独立判断网络流量情况以动态适应当前网络情况。在提升效率的同时兼顾了站点服务器的负载情况,是一种新型的智能自律型爬虫,使整个互联生态系统变得更为智能与友好。
附图说明
图1是本发明实施例的流程示意图。
具体实施方式
本实施例提供了一种主机负荷智能感知的定向爬虫方法,如图1所示,包括以下步骤:
(1)打开浏览器并定位到待爬取站点,通过模拟浏览器行为实现页面的跳转以及读取。若待爬取站点需要登陆,则定位到登陆界面,并通过程序执行自动登陆,使浏览器自动记录cookie。
其中,所述打开浏览器并定位到待爬取站点是通过采用selenium测试工具实现。模拟浏览器(点击,拖动等)的行为是通过Xpath路径进行HTML element定位,定位成功后调用selenium测试工具的webdriver模块相应函数模拟浏览器的行为。为了拥有更好的兼容性,浏览器的对象优选为Chrome,且为了正确调用选定浏览器,在步骤(1)之前还包括:安装指定浏览器驱动程序,导入实现方法所需要的python库,如selenium库等。
(2)根据设置的检索条件自动生成需要爬取页面的URL集合。
其中,通过待爬取站点自带检索引擎产生的URL,分析出URL中键值对的含义,得到自定义URL中的参数,生成需要爬取页面的URL集合。
例如假设需要检索在2019年9月18日到2019年9月25日中所有包含“判决”关键词的刑事案件,设置检索URL为:“http://openlaw.cn/search/judgement/advanced?showResults=true&keyword=%E5%88%A4%E5%86%B3&causeId=&caseNo=&litigationType=Criminal&docType=&litigant=&plaintif f=&defendant=&thirdParty=&lawyerId=&lawFirmId=&legals=&courtId=&judgeId=&clerk=&judgeDateYear=&judgeDateBegin=2019-09-18&judgeDateEnd=2019-09-25&zone=&proce dureType=&lawId=&lawSearch=&courtLevel=&judgeResult=&page=1”。通过控制URL中的”judgeDateBegin”,“judgeDateEnd”,”keyword”,“litigationType”这几个键的值来设置检索条件。为了获得包含所有检索条目的URL集合,使用Xpath路径技术定位页面中的检索总条目数,其中定位Xpath为:“/html/body[@class='search search-results']/div[@id='ht-site-container']/div[@id='primary']/div[@class='ht-container']/div[@class='search-containerclearfix']/form[@id='search-form']/div[@id='search-btn-bar']/p/b”。将获取的检索总条目数目除以每一页包含的条目数(20条),可以得到包含所有检索条目的总页面数。通过设置特殊URL中“page”键的值,可以得到包含所有检索条目的URL集合。
(3)根据爬虫任务的重要性和紧迫程度对URL集合进行优先级分级,按照优先级将URL集合划分为若干个子集合,为每个子集合分配一个或多个线程来处理。
其中,根据爬虫任务的重要性和紧迫程度进行优先级分级,越重要、越紧迫的任务优先级越高。为了最大限度提升爬取效率,使用python语言的多线程操作来对整个待爬取的URL集合进行子集划分,对每一个子集都新建一个线程进行爬取。
(4)根据任务优先级和主机/网络的繁忙程度,对线程的运行情况进行调整。
其中,对线程的运行情况进行调整的具体方法为:在主机/网络繁忙的时候,不分配爬取任务或只进行优先级高于阈值的任务,而将主要的采集工作放在主机/网络的闲暇时间进行。
其中,每个线程在进行数据爬取时所采用的方法为:
A、对于URL中待爬取的条目,抓取相应内容的关键字词或标题,进行语义分析,如关键词提取、文本聚类、情感分析等,过滤掉不符合爬取要求的数据,仅爬取符合爬取要求的数据,减少无效数据抓取,提升抓取的效率。这里可以调用python的相关语义分析库进行操作。
B、记录当前页面响应时间,并与历史页面响应时间比较,从而主动感知主机/网络的繁忙程度,动态地调整爬虫的爬取频度和数据量,具体为:若感知到当前时间段主机/网络繁忙,则放缓爬取速度,若当前时间段主机/网络闲暇,则提高爬取速度。
例如,接上例,为了进入经过筛选符合爬取要求的检索条目,并爬取公开裁判文书,需要在每一个检索列表页面定位到每一个通过筛选的检索项并模拟点击。使用Xpath定位HTML页面的技术定位页面中的每一个检索条目,其中定位Xpath路径为:“/html/body[@class='search search-results']/div[@id='ht-site-container']/div[@id='primary']/div[@class='ht-container']/main[@id='content']/div[@id='ht-kb']/article[@class='ht_kb type-ht_kb status-publish format-standard hentry'][number]/h3[@class='entry-title']/a”。在Xpath路径中加粗的项目即为检索条目编号,通过指定通过步骤四筛选的检索条目编号,便可以实现进入当前检索页面的每一通过筛选的检索条目。为了爬取公开裁判文书,需要定位裁判文书详情页面的文书文本区域。使用Xpath在裁判文书详情页面进行定位,其中定位Xpath路径为:“/html/body/div[1]/div/div/main/div/article“。之后使用python文件写入操作将文本写入到指定文件夹。
为了动态调整爬虫的爬取速度,考虑通过网页响应时间这一指标来衡量网络流量进而主动感知主机/网络的繁忙程度。使用window.performance.timing这一W3C性能小组引入的API可以计算网页响应时间(网页加载时间)。在selenium测试工具中通过执行浏览器实例的脚本函数execute_script(“return window.performance.timing.navigationStart“)和execute_script(“return window.performance.timing.loadEventEnd“),最后将结果相减即为网页响应时间。通过自定义算法比较当前响应时间与历史响应时间,从而主动感知主机/网络的繁忙程度,动态调整爬虫的爬取频度和数据量。
为了定时执行以上所述的步骤,从而使整个技术方案实现自动化与无人值守的能力,采用python语言的apscheduler库以实现爬取模块的周期性执行,从而实现了整个系统的自动化策略。
本实施例还提供了一种主机负荷智能感知的定向爬虫系统,包括处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
Claims (9)
1.一种主机负荷智能感知的定向爬虫方法,其特征在于该方法包括:
(1)打开浏览器并定位到待爬取站点,通过模拟浏览器行为实现页面的跳转以及读取;
(2)根据设置的检索条件自动生成需要爬取页面的URL集合;
(3)根据爬虫任务的重要性和紧迫程度对URL集合进行优先级分级,按照优先级将URL集合划分为若干个子集合,为每个子集合分配一个或多个线程来处理;
(4)根据任务优先级和主机/网络的繁忙程度,对线程的运行情况进行调整,其中,每个线程在进行数据爬取时所采用的方法为:
A、对于URL中待爬取的条目,抓取相应内容的关键字词或标题,进行语义分析,并根据语义分析结果筛选爬取内容;
B、记录当前页面响应时间,并与历史页面响应时间比较,从而主动感知主机/网络的繁忙程度,动态地调整爬虫的爬取频度和数据量。
2.根据权利要求1所述的主机负荷智能感知的定向爬虫方法,其特征在于:步骤(1)中所述打开浏览器并定位到待爬取站点是通过采用selenium测试工具实现。
3.根据权利要求1所述的主机负荷智能感知的定向爬虫方法,其特征在于:步骤(1)中,模拟浏览器的行为是通过Xpath路径进行HTML element定位,定位成功后调用selenium测试工具的webdriver模块相应函数模拟浏览器的行为。
4.根据权利要求1所述的主机负荷智能感知的定向爬虫方法,其特征在于:步骤(1)中,若待爬取站点需要登陆,则定位到登陆界面,并通过程序执行自动登陆,使浏览器自动记录cookie。
5.根据权利要求1所述的主机负荷智能感知的定向爬虫方法,其特征在于:步骤(2)中所述URL集合通过以下方式生成:
通过待爬取站点自带检索引擎产生的URL,分析出URL中键值对的含义,得到自定义URL中的参数,生成需要爬取页面的URL集合。
6.根据权利要求1所述的主机负荷智能感知的定向爬虫方法,其特征在于:步骤(4)中所述对线程的运行情况进行调整的具体方法为:在主机/网络繁忙的时候,不分配爬取任务或只进行优先级高于阈值的任务,而将主要的采集工作放在主机/网络的闲暇时间进行。
7.根据权利要求1所述的主机负荷智能感知的定向爬虫方法,其特征在于:步骤(4)A中,所述根据语义分析结果筛选爬取内容,具体为:通过语义分析,过滤掉不符合爬取要求的数据,仅爬取符合爬取要求的数据。
8.根据权利要求1所述的主机负荷智能感知的定向爬虫方法,其特征在于:步骤(4)B中,所述动态地调整爬虫的爬取频度和数据量,具体为:若感知到当前时间段主机/网络繁忙,则放缓爬取速度,若当前时间段主机/网络闲暇,则提高爬取速度。
9.一种主机负荷智能感知的定向爬虫系统,包括处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于:所述处理器执行所述程序时实现权利要求1-8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911353456.5A CN111125488A (zh) | 2019-12-25 | 2019-12-25 | 一种主机负荷智能感知的定向爬虫方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911353456.5A CN111125488A (zh) | 2019-12-25 | 2019-12-25 | 一种主机负荷智能感知的定向爬虫方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111125488A true CN111125488A (zh) | 2020-05-08 |
Family
ID=70502771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911353456.5A Pending CN111125488A (zh) | 2019-12-25 | 2019-12-25 | 一种主机负荷智能感知的定向爬虫方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125488A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112347394A (zh) * | 2020-11-30 | 2021-02-09 | 广州至真信息科技有限公司 | 网页信息的获取方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130041881A1 (en) * | 2011-08-09 | 2013-02-14 | Microsoft Corporation | Optimizing web crawling with user history |
CN106844522A (zh) * | 2016-12-29 | 2017-06-13 | 北京市天元网络技术股份有限公司 | 一种网络数据爬取方法和装置 |
CN109614539A (zh) * | 2019-01-16 | 2019-04-12 | 重庆金融资产交易所有限责任公司 | 数据抓取方法、装置及计算机可读存储介质 |
CN110532453A (zh) * | 2019-08-12 | 2019-12-03 | 北京智游网安科技有限公司 | 一种调整爬虫更新频率的方法、存储介质及爬虫服务器 |
-
2019
- 2019-12-25 CN CN201911353456.5A patent/CN111125488A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130041881A1 (en) * | 2011-08-09 | 2013-02-14 | Microsoft Corporation | Optimizing web crawling with user history |
CN106844522A (zh) * | 2016-12-29 | 2017-06-13 | 北京市天元网络技术股份有限公司 | 一种网络数据爬取方法和装置 |
CN109614539A (zh) * | 2019-01-16 | 2019-04-12 | 重庆金融资产交易所有限责任公司 | 数据抓取方法、装置及计算机可读存储介质 |
CN110532453A (zh) * | 2019-08-12 | 2019-12-03 | 北京智游网安科技有限公司 | 一种调整爬虫更新频率的方法、存储介质及爬虫服务器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112347394A (zh) * | 2020-11-30 | 2021-02-09 | 广州至真信息科技有限公司 | 网页信息的获取方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10242089B2 (en) | Method and system for searching for digital assets | |
KR101366408B1 (ko) | 컴퓨터 실행 가능 컴포넌트를 포함하는 컴퓨터 구현된 시스템 | |
Menczer | Complementing search engines with online web mining agents | |
US9940391B2 (en) | System, method and computer readable medium for web crawling | |
US20170061029A1 (en) | Interactive web crawler | |
US8886623B2 (en) | Large scale concept discovery for webpage augmentation using search engine indexers | |
CN107977575B (zh) | 一种基于私有云平台的代码组成分析系统和方法 | |
US11748557B2 (en) | Personalization of content suggestions for document creation | |
CN102831199A (zh) | 建立兴趣模型的方法及装置 | |
CN108431814A (zh) | 文档内容的预测性过滤 | |
US9323861B2 (en) | Method and apparatus for enhanced web browsing | |
US8301621B2 (en) | Topic map for navigational control | |
Hoeber | Web information retrieval support systems: The future of web search | |
US8924380B1 (en) | Changing a rank of a document by applying a rank transition function | |
Gossen et al. | Extracting event-centric document collections from large-scale web archives | |
Chang | A survey of modern crawler methods | |
CN111125488A (zh) | 一种主机负荷智能感知的定向爬虫方法及系统 | |
Oza et al. | Elimination of noisy information from web pages | |
Ganapathy et al. | Easy urls in the content management system with crawlers for added security | |
Saxena et al. | Personalized web search using user identity | |
US10585953B1 (en) | Migrating image histories between different databases | |
Franz et al. | Lena-tr: Browsing linked open data along knowledge-aspects | |
Hoeber et al. | Automatic topic learning for personalized re-ordering of web search results | |
CN103902550B (zh) | 搜索站点的方法和装置 | |
Garg | Predicting the Ranking of Web Page on SERP by Applying Machine Learning Techniques |
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 |