CN111324797B - 一种高速精准获取数据的方法和装置 - Google Patents
一种高速精准获取数据的方法和装置 Download PDFInfo
- Publication number
- CN111324797B CN111324797B CN202010104603.1A CN202010104603A CN111324797B CN 111324797 B CN111324797 B CN 111324797B CN 202010104603 A CN202010104603 A CN 202010104603A CN 111324797 B CN111324797 B CN 111324797B
- Authority
- CN
- China
- Prior art keywords
- url
- crawling
- verification code
- module
- verification
- 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.)
- Active
Links
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]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种高速精准获取数据的方法和装置,属于数据处理领域。该方法包括:根据需求,生成URL请求表;对URL请求表中的URL请求以及搜索引擎中提取的URL请求进行调度与过滤;对于URL请求时出现要求验证码验证页面,对待识别的验证码进行分类并识别后,进入下一步骤;未出现验证验证页面,直接进入下一步骤;对网页内容进行爬取;创建数据提取表达式,应用于后续网页的内容提取工作。本发明技术方案通过验证码快速识别、内容提取表达式自动生成、智能多线程池抓取三大技术大幅提高了爬虫自动化程度与爬取效率。即减少了人为参与爬取工作的频率又保证了爬虫的可靠性。
Description
技术领域
本发明涉及数据处理领域,具体涉及一种高速精准获取数据的方法和装置。
背景技术
近年以来,互联网发展速度迅猛,web的信息量爆炸式增长。我们已经进入互联网大数据的新时代。同时,大数据时代也给传统的搜索引擎带来了挑战,如何快速、准确的抓取各网站的数据信息已经成为了搜索引擎亟须解决的问题。
网络爬虫是自动抓取网页信息并提取其内容的程序,是搜索引擎的重要组成部分。提高网络爬虫系统的抓取效率与准确率是提升搜索引擎能力的最为关键的部分。
目前针对提升爬虫效率的方法主要由两方面:1、主题爬虫类,通过某行业构建的专属词向量,在爬虫爬取数据过程中,将所爬取的网络资源带入词向量进行相似度分析,过滤掉相似度较低的资源,以达到缩小抓取范围,提高爬虫抓取准确度。2、分布式爬虫类,通过提高硬件水平,将传统的一台电脑执行一个爬取任务改变为多台电脑共同完成一项爬取任务,随着硬件数量的增加,爬虫效率高速增长。
然而,目前很少有关于在提高爬虫自动化程度上来提高爬虫效率的文章。我们知道,现在很多网站处于信息保护的目的,会设置各种难度较高的验证码以阻止爬虫抓取网站数据,不得不靠人工干扰来维持爬虫的正常进行,很大程度的降低了爬虫的爬取效率。并且在数据提取过程中,需要对不同的网址进行网页结构分析,以构造出能够准确提取所要信息的匹配表达式,这个过程需要人工介入,耗费较长时间,容易出现信息提出错误等人为原因造成的不良影响。
本文正是在提升爬虫自动化程度以及爬取速度两个方面进行研究,开发出了一套高速高可靠获取数据的系统。主要基于三个子模块:验证码识别模块、内容提取训练模块、主题筛选模块、线程池抓取模块。
发明内容
为了实现以上目的,本发明提供了一种基于验证码快速识别、内容提取表达式自动生成、智能多线程池等技术的高速精准获取数据的方法和系统,提高爬虫的爬取效率。
根据本发明的第一方面,提供一种高速精准获取数据的方法,包括:
步骤1:根据需求,生成URL请求表;
步骤2:对URL请求表中的URL请求以及搜索引擎中提取的URL请求进行调度与过滤;
步骤3:对于URL请求时出现要求验证码验证页面,使用验证码识别模块处理后,进入下一步骤;未出现验证验证环节页面,直接进入下一步骤;
步骤4:由爬行模块进行网页的爬取;
步骤5:创建数据提取表达式,应用于后续网页的内容提取工作。
进一步的,所述步骤1中,所述URL请求表的形式为“搜索引擎域名+主题关键词+搜索结果起始页”。
进一步的,所述步骤2具体包括:
步骤21:将URL请求表中的URL请求以及搜索引擎中提取的URL请求放入公共队列schedulerQueue中;
步骤22:通过MD5加密算法对URL请求进行16位MD5压缩;
步骤23:将生成的密文切割为16位的数组a,然后将a[0]的值与根节点下直线的节点值相比较,如果找到了一样的目标节点r[1],则将r[1]向下的节点与a[1]比较,以此类推,找到重复的URL请求并去除。
进一步的,所述步骤3具体包括:
步骤31:将验证码图片下载并进行降噪处理;
步骤32:将验证码图片分类为:可自动识别验证码图片或需人工识别验证码图片;
步骤33:若验证码图片属于需人工识别验证码图片,则直接导入第三方打码平台接口,进行网络人工打码,然后进入步骤4;
步骤34:若验证码图片属于可自动识别验证码图片,则通过图像识别模型对验证码图片进行识别,识别完毕后提交网站通过,然后进入步骤4。
进一步的,所述步骤34中,若识别失败3次以上,则爬取该网站1000张验证码图片并提交至第三方打码平台进行打标签,用以扩充训练集对图像识别模型进行训练,继续尝试识别该网站验证码,若通过验证,进入下一步骤;若再次失败3次以上,继续爬取验证码图片,用以继续扩充训练集对图像识别模型进行训练,直至识别出该验证码图片。
进一步的,所述验证码识别模块拥有已经训练好的图像识别模型,包括:纯数字验证码识别模型、纯英文验证码识别模型、数英混合验证码识别模型、词序验证码识别模型、滑块验证码模型。
进一步的,所述步骤4包括:
将所有的URL请求放入线程池抓取模块,线程池抓取模块根据当前的硬件系统结构,算出最佳的线程数量并进行内容抓取;
爬行过程中,如出现异常,通过异常处理模块解决异常以及将异常输出到爬行日志中。
进一步的,所述异常处理模块涵盖爬虫经常出现的异常。
进一步的,所述步骤5具体包括:
步骤51:爬行模块以深度优先方式爬取全部网页数量的20%,作为样本网页并解析为dom树的结构,取出每个标签对应的xpath路径,按xpath路径相同划分为一组,统计分组后标签个数,组数最多的一组,记录其对应的xpath路径;
步骤52:对所述样本网页的样本元素所在样本dom树种的位置进行机器学习模型分析,得到针对样本元素的数据提取表达式;
步骤53:通过数据提取表达式,提取爬行模块爬取的所有网页中每篇文章的标题,计算每篇文章的标题与步骤1中主题关键词的相似度,筛选去除无关标题所对应的文章及网页;
步骤54:将筛选后的文章全文爬取到本地,抽取文章摘要,计算每篇文章的文章摘要与步骤1中主题关键词的相似度,筛选去除无关文章摘要所对应的文章及网页,将通过筛选的文章及网页存入数据库,精确筛选得到与主题关键词最为相关的文章及网页;
步骤55:将上一步筛选得到的URL传递给URL生成模块,对这些URL所链接的网页进行全文抓取。
进一步的,所述步骤53具体包括:
步骤531:提取爬行模块爬取的所有网页中每篇文章的标题并记录标题对应的链接url;
步骤532:使用中文分词算法将每条标题进行分词处理,各自组成一个集合,生成每个标题的词频向量[B1,B2,B3…BN],N为正整数;
步骤533:将步骤1中主题关键词处理为词频向量A,分别计算Bi与A词频向量的余弦相似度,值越大就越相似,i∈[1,2,3…N];
步骤534:筛选去除相似度小于65%的标题所对应的链接url。
进一步的,所述步骤54具体包括:
步骤541:将筛选后的文章全文爬取到本地,获取每行记录的标题和摘要字段,并拼接这两个字段;
步骤542:加载预定义停用词表,遍历文章文本,采用jieba.analyse.textrank函数筛选出指定词性,以及topN个文本关键词,并将结果存入变量abstract中,N为正整数;
步骤543:使用tf-idf算法,对变量abstract进行分词提取关键词,生成计算每篇文章对应的abstract对应的词频向量;
步骤544:计算每篇文章对应的abstract对应的词频向量与步骤1中主题关键词的词频向量的余弦相似度,值越大就越相似;
步骤545:筛选去除相似度小于65%的abstract对应的文章,将通过筛选的文章存入数据库,精确筛选得到与主题最为相关的URL链接。
根据本发明的第一方面,提供一种高速精准获取数据的系统,包括:
URL生成模块,用于根据用户的搜索关键词配置要搜索的URL,形成URL请求表;
调度模块,用于根据URL请求表对URL请求进行调度与过滤;
验证码快速识别模块,用于对待识别的验证码进行分类并识别;
爬行模块,用于对网页内容进行爬取,
内容提取训练模块,用于创建数据提取表达式,应用于后续网页的内容提取工作。
进一步的,所述验证码快速识别模块包括验证码分类器,用于将验证码分类为:纯数字、纯英文、数英组合、词序、滑块、其他中的一种。
进一步的,所述验证码分类器的构建过程为:
爬取多张目前主流验证码图片,分为可自动识别验证码图片和需人工识别验证码图片;
将可自动识别验证码图片和需人工识别验证码图片分别划分训练集与测试集;
对图片进行数值处理,转换成特征方向梯度直方图;
使用支持向量机算法对训练集进行训练学习,然后带入测试集测试结果。
进一步的,所述可自动识别验证码图片和需人工识别验证码图片中,训练集占总数据80%,测试集占总数居20%。
进一步的,所述自动识别验证码包括但不限于纯数字、纯英文、数英组合、词序、滑块。
进一步的,所述需人工识别验证码包括但不限于图片选择、根据语义选择。
进一步的,所述爬行模块包括:
异常处理模块,用于解决异常以及将异常输出到爬行日志中;
线程池抓取模块,用于根据当前的硬件系统结构,算出最佳的线程数量,并进行内容抓取。
本发明的有益效果:
本发明技术方案通过验证码快速识别、内容提取表达式自动生成、智能多线程池抓取三大技术大幅提高了爬虫自动化程度与爬取效率。即减少了人为参与爬取工作的频率又保证了爬虫的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1示出本发明实施例的整体系统结构图;
图2示出本发明实施例的验证码识别系统的流程图;
图3示出本发明实施例的URL去重模块使用的MD5去重树新型结构;
图4示出本发明实施例的爬虫多线程池的工作流程图;
图5示出本发明实施例的内容提取模块中智能提取Response中元素的流程图;
图6示出本发明实施例的内容提取模块中提取新闻元素的实例图;
图7示出本发明实施例的主题提取模块得工作流程图;
图8示出本发明实施例的验证码快速识别的示例图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
多个,包括两个或者两个以上。
和/或,应当理解,对于本公开中使用的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
为了提高爬虫的爬取效率,本发明从提高爬虫的自动化程度角度出发,开发了一种基于验证码快速识别、内容提取表达式自动生成、智能多线程池等技术的高速高效获取数据的方法。
为了实现上述发明目的,本发明采用的技术方案如下:
本系统主要有8个模块(如下):URL生成模块、调度模块、验证码快速识别模块、内容提取表达式训练模块、爬行模块、异常处理模块、线程池抓取模块。
此8个模块循环配合工作,直到所爬取网页中不再含有URL为止。
步骤一:根据需求,生成初始URL。一般是根据用户所给出的搜索关键词,配置要搜索的URL,形成初始的URL表。一般形式为“搜索引擎域名+主题关键词+搜索结果其企页”。
步骤二:对URL请求进行调度与过滤。由调度模块完成。调度工作:模块接受引擎发过来的请求,压入队列中,可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是什么;URL去重工作,避免爬取工作中出现重复爬取某个或某几个网页导致效率效降及陷入死循环的问题,本模块采用新方法-MD5与树结构结合组成的新存储结构,结构图见图3。达到查重时间复杂度为O(1),去重速度较传统方法提高近60倍。
201将起初构造的URL与在搜索引擎中提取的URL放入公共队列schedulerQueue中。
202对URL进行16位MD5压缩。MD5加密算法有16位和32位两种,16位的碰撞率为2的64次方分之1。已经保证了去重效果,如果使用32位的话,存储空间会多一倍。因此本方法采用16位加密。
203将生成的密文切割为16位的数组a,然后将a[0]的值与根节点下直线的节点值相比较,如果找到了一样的目标节点r[1],则将r[1]向下的节点与a[1]比较。类推,找到重复的URL。
步骤三(重点,参考下图解说):对于URL请求时出现要求验证码验证页面,使用验证码识别模块处理后,进入爬行模块;未出现验证验证环节页面,直接进入爬行模块。
301验证码识别模块拥有已经训练好的图像识别模型,共分为5种:纯数字验证码识别模型、纯英文验证码识别模型、数英混合验证码识别模型、词序验证码识别模型、滑块验证码模型。将验证码下载进行降噪处理后,输入验证码分类器进行分类。
302验证码分类器会将传入的验证码分类为:纯数字、纯英文、数英组合、词序、滑块、其他,6种类型种的一种。
验证码分类器的构建过程第一步:从万维网爬取目前主流验证码共7类(纯数字、纯英文、数英组合、词序、滑块、图片选择、根据语义选择),将前5类分别独立分为一类,后面两类以及少见验证码类别列为其他类。每类验证码提供10000张已经打码完毕的图片。第二部:划分训练集(占总数据80%)与测试集(占总数居20%)。第三步:对图片进行数值处理,转换成计算机可理解的特征方向梯度直方图。第四步:使用支持向量机(SVM)算法对训练数据进行训练学习,然后带入测试数据测试结果,在调试参数达到最佳状态下,分类正确率可达到98.6%。
303若验证码被分入其他类,则直接导入第三方打码平台接口,进行网络人工打码,每个验证码耗时约2秒。然后进入爬行模块。
304若验证码被分入另外5类,则将图片导入对应的类型的训练模型进行识别。若识别完毕,提交网站通过,则进入爬行模块。若识别失败3次以上,则启动更新训练集动作,使用爬虫爬取该网站1000张验证码并提交至第三方打码平台进行打标签,将新数据扩充原模型进行训练,尝试识别该网站验证码,若通过验证,进入爬行模块,若失败3次以上,继续爬取验证码,扩展数据继续训练模型,直至可识别该验证码。
步骤四:可以通过网站的验证码验证后,由爬行模块进行内容的爬取。
401将所有的URL放入线程池模块,线程池根据当前的硬件系统结构,算出最佳的线程数量。使用多线程方法可将爬取速度提高5倍左右,受硬件结构影响较大。
402爬行过程中,会出现各种的异常。为了提高爬虫健壮性,加入了异常处理模块,使用except语句的方式解决异常以及将异常输出到爬行日志中。异常处理模块涵盖了爬虫经常出现的异常。
步骤五:爬行模块获取了URL的response后,response以及提取元素均输入内容提取训练模块。经训练后得到数据提取表达式,应用于后续网页的内容提取工作。
501将获取的样本元素与样本网页输入内容提取训练模块。将web网页解析为dom树的结构。取出每个标签对应的xpath路径,按xpath路径相同划分为一组;然后,统计分组后标签个数。组数最多的一组,记录其对应的xpath路径。
502根据输入的样本元素所在样本dom树种的位置进行机器学习模型分析,得到提取表达式。将此表达式应用到后续网页提取工作中。
应用举例:提取某网页所有新闻标题、发布时间、新闻来源。
提取样本网页结构,程序解析为dom树,共85条位置表达式,每条位置表达式对应着一条或多条数据,其中就包含了我们需要的新闻标题、发布时间等数据。将我们的样本元素输入到模型中,模型根据解析出来的dom树,解析出:
正面提取表达式为//*[@id="root"]/div[3]/div[2]/div[1]/div[1]
标题提取表达式为//*[@id="root"]/div[3]/div[1]/h1
发布时间提取表达式为//*[@id="root"]/div[3]/div[1]/p/span
新闻来源提取表达式为/html/body/div[3]/div[1]/p/a[2]
详细流程与结果可见图6。
503首先提取出的网页中每篇文章的标题并记录标题对应的链接url,使用中文分词算法将每条标题进行分词处理,各自组成一个集合。然后生成每个标题的词频向量[B1,B2,B3…]。取步骤一中初始关键词处理为词频向量A。分别计算B与A词频向量的余弦相似度,值越大就越相似。筛选去除相似度小于阈值的标题所对应的链接url。将通过筛选的链接url重新传入爬行模块。
504爬行模块使用多线程筛选后的文章全文爬取到本地。交给主题筛选模块。主题模块调用文章内容审查模块,调用TextRank算法,抽取文章摘要。首先读取爬取模块传递的文章文本,获取每行记录的标题和摘要字段,并拼接这两个字段;加载预定义停用词表,遍历文章文本,采用jieba.analyse.textrank函数筛选出指定词性,以及topN个文本关键词,并将结果存入变量abstract中;继续调用相似度计算模块,使用tf-idf算法,对abstract进行分词提取关键词,生成计算每篇文章对应的abstract对应的词频向量。最后计算每条词频向量与原始词频向量的余弦相似度,值越大就越相似。筛选去除相似度小于阈值的abstract对应的文章,将通过筛选的文章存入数据库,精确筛选得到与主题最为相关的数据。
505将提取的新的URL继续给URL生成模块,进行深度抓取。
实施例
本发明开发了一种高速高效获取数据的方法。主要通过验证码快速识别、内容提取表达式自动生成、智能多线程池抓取三大技术大幅提高了爬虫自动化程度与爬取效率。即减少了人为参与爬取工作的频率又保证了爬虫的可靠性。下面将参照附图更详细地描述本公开的示例性实施例。
本发明的整体结构图如图1所示。首先根据用户所给出的搜索关键词,配置要搜索的URL,形成初始的URL表。然后调用调度模块,模块接受URL传递的表,并压入队列中,由它来分配下一个要抓取的网址是什么,调度模块同时执行URL去重工作。然后进入进入验证码识别模块,对要识别的验证码进行分类,使用机器学习模型破解已知类型的验证码,第三方打码平台破解未知类型验证码,保证验证码阶段可以顺利通过。提交URL后,爬行模块使用多线程池快速爬取网页内容,异常处理模块保证爬虫顺利运行。最后进入内容训练提取模块,依据前期输入的样本元素与样本网页训练得出内容提取表达式,直接应用此表达式进行内容提取,全过程不必人工参与,大大提高自动化程度与执行效率。然后将提取的URL重新提交给URL生成模块进行下一波爬取工作。
验证码获取工作是本发明中关键技术之一,其流程图如图2所示。
验证码识别模块目前拥有已经训练好的图像识别模型,共分为5种:纯数字验证码识别模型、纯英文验证码识别模型、数英混合验证码识别模型、词序验证码识别模型、滑块验证码模型。可用于同类型的验证码的识别。
当检测到请求网页中出现需要输入验证码的情况时,首先将验证码下载至本地,使用图像处理模块对进行尺寸处理、降噪处理。降噪处理基于NLmeans(非局部均值去噪)算法实现。
将处理后的验证码输入验证码分类器进行分类。分类器基于SVM(支持向量机)算法实现。若验证码被分入其他类,则直接导入第三方打码平台接口,进行网络人工打码。此处使用的打码平台为打码兔。
若验证码被分入另外4类种,则将图片导入对应的类型的训练模型进行识别。若识别完毕,提交网站通过,则进入爬行模块。若识别失败3次以上,则启动更新训练集动作,使用爬虫爬取该网站1000张验证码并提交至第三方打码平台进行打标签,将新数据扩充原模型进行训练,尝试识别该网站验证码,若通过验证,进入爬行模块,若失败3次以上,继续爬取验证码,扩展数据继续训练模型,直至可识别该验证码。
本发明在调度模块中使用了一种新式的URL去重方法,它基于MD5加密算法与树形图结构。如图2所示。去重树的深度为MD5的位数即16层,去重树的节点值是0-9、a-f中的一个,所以每个节点都有16个指针指向下一个节点。
去重树的基本思想及实现步骤如下:
(1)对url进行16位MD5压缩。MD5加密算法有16位和32位两种,16位的碰撞率为2的64次方之1。其实就已经保证了去重效果,如果用32位的话,存储空间会多一倍。因此采用16位的存储方式。
(2)将生成的密文切割为16位的数组a,然后将a[0]的值与根节点下指向的节点值相比较,如果找到了一样的目标节点r[1],则将r[1]向下的节点与a[1]相比较,以此类推下去。如果未找到则新建一个值为当前比较字符,后续节点值为下一个字符的节点。
这种存储结构是传统的hash(哈希)表结构查迅速的的n/m倍。其中n为URL数量,m为hash表长度。URL数量常以亿计,因此查询效率得到非常大的提高。
为了最大化的提高爬虫的抓取速度,设计了爬虫线程池系统。其运行流程图如图4所示。将所有的URL放入线程池模块,线程池很根据当前的硬件系统结构,算出最佳的线程数量,使用multiprocessing包的cpu_count()方法即可。
先判断线程池中核心线程池是否都在执行任务。如果不是,则创建一个线程执行另外的URL抓取任务。否则核心线程池中所有的线程都在执行任务,则进入第2步;判断当前阻塞队列是否已满,如果未满,则将URL爬取任务放置在阻塞队列中;否则,则进入第3步;判断线程池中所有的线程是否都在执行任务,如果没有,则创建一个新的线程来执行URL爬取工作,否则,则交给饱和策略进行处理。线程池方式对于爬虫这种I/O密集型任务,可明显提高其爬取效率。
在爬取网页后,进行元素提取。本发明突破了传统的人工总结书写提取表达式的方式,使用机器学习方法训练得出元素提取表达式。
首先输入样本网页和样本元素;将网页解析为dom树,得到样本的dom树图;当所要提取的数据为内容数据时,遍历样本网页dom树的节点,分别将内容数据与节点属性值及节点内容进行比较,找到内容数据在样本网页dom树中的节点,然后从该节点回溯到样本网页dom树的根节点,将回溯中经历的各节点信息以及内容数据在节点中的位置记录为数据提取条件;当所要提取的数据为URL地址时,遍历样本网页dom树的节点,将URL地址与节点内容进行比较,找到URL地址在样本网页dom树中的节点,然后从该节点回溯到样本网页dom树的根节点,将回溯中经历的各节点信息以及节点URL地址属性记录为数据。最终训练得出所需元素的提取表达式。
同样,在爬取同类型的新的网页的时候,将爬取的web网页解析成dom树结构,得到web网页的dom树。将样本网页训练得到的提取表达式应用到此dom树中,提取所需元素。
根据输入的样本元素所在样本dom树种的位置进行机器学习模型分析,得到提取表达式。将此表达式应用到后续网页提取工作中。
将提取的新的URL继续给URL生成模块,进行深度抓取。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求书的保护范围内。
Claims (9)
1.一种高速精准获取数据的方法,其特征在于,包括以下步骤:
步骤1:根据需求,生成URL请求表,形式为“搜索引擎域名+主题关键词+搜索结果起始页”;
步骤2:对URL请求表中的URL请求以及搜索引擎中提取的URL请求进行调度与过滤;
步骤3:对于URL请求时出现要求验证码验证页面,对待识别的验证码进行分类并识别后,进入步骤4;未出现验证验证页面,直接进入步骤4;
步骤4:对网页内容进行爬取;
步骤5:创建数据提取表达式,应用于后续网页的内容提取工作,
其中,所述步骤5具体包括:
步骤51:爬行模块以深度优先方式爬取全部网页数量的20%,作为样本网页并解析为dom树的结构,取出每个标签对应的xpath路径,按xpath路径相同划分为一组,统计分组后标签个数,组数最多的一组,记录其对应的xpath路径;
步骤52:对所述样本网页的样本元素所在样本dom树种的位置进行机器学习模型分析,得到针对样本元素的数据提取表达式;
步骤53:通过数据提取表达式,提取爬行模块爬取的所有网页中每篇文章的标题,计算每篇文章的标题与步骤1中主题关键词的相似度,筛选去除无关标题所对应的文章及网页;
步骤54:将筛选后的文章全文爬取到本地,抽取文章摘要,计算每篇文章的文章摘要与步骤1中主题关键词的相似度,筛选去除无关文章摘要所对应的文章及网页,将通过筛选的文章及网页存入数据库,精确筛选得到与主题关键词最为相关的文章及网页;
步骤55:将上一步筛选得到的URL链接传递给URL生成模块,对这些URL所链接的网页进行全文抓取。
2.根据权利要求1所述的方法,其特征在于,所述步骤2具体包括:
步骤21:将URL请求表中的URL请求以及搜索引擎中提取的URL请求放入公共队列schedulerQueue中;
步骤22:通过MD5加密算法对URL请求进行16位MD5压缩;
步骤23:将生成的密文切割为16位的数组a,然后将a[0]的值与根节点下直线的节点值相比较,如果找到了一样的目标节点r[1],则将r[1]向下的节点与a[1]比较,以此类推,找到重复的URL请求并去除。
3.根据权利要求1所述的方法,其特征在于,所述步骤3具体包括:
步骤31:将验证码图片下载并进行降噪处理;
步骤32:将验证码图片分类为:可自动识别验证码图片或需人工识别验证码图片;
步骤33:若验证码图片属于需人工识别验证码图片,则直接导入第三方打码平台接口,进行网络人工打码,然后进入步骤4;
步骤34:若验证码图片属于可自动识别验证码图片,则通过训练好的图像识别模型对验证码图片进行识别,识别完毕后提交网站通过,然后进入步骤4。
4.根据权利要求1所述的方法,其特征在于,所述步骤4包括:
将所有的URL请求放入线程池抓取模块,线程池抓取模块根据当前的硬件系统结构,算出最佳的线程数量并进行内容抓取;
爬行过程中,如出现异常,通过异常处理模块解决异常以及将异常输出到爬行日志中。
5.根据权利要求1所述的方法,其特征在于,所述步骤53具体包括:
步骤531:提取爬行模块爬取的所有网页中每篇文章的标题并记录标题对应的链接url;
步骤532:使用中文分词算法将每条标题进行分词处理,各自组成一个集合,生成每个标题的词频向量[B1,B2,B3…BN],N为正整数;
步骤533:将步骤1中主题关键词处理为词频向量A,分别计算Bi与A词频向量的余弦相似度,值越大就越相似,i∈[1,2,3…N];
步骤534:筛选去除相似度小于65%的标题所对应的URL链接。
6.根据权利要求1所述的方法,其特征在于,所述步骤54具体包括:
步骤541:将筛选后的文章全文爬取到本地,获取每行记录的标题和摘要字段,并拼接这两个字段;
步骤542:加载预定义停用词表,遍历文章文本,采用
jieba.analyse.textrank函数筛选出指定词性,以及topN个文本关键词,并将结果存入变量abstract中,N为正整数;
步骤543:使用tf-idf算法,对变量abstract进行分词提取关键词,生成计算每篇文章对应的abstract对应的词频向量;
步骤544:计算每篇文章对应的abstract对应的词频向量与步骤1中主题关键词的词频向量的余弦相似度,值越大就越相似;
步骤545:筛选去除相似度小于65%的abstract对应的文章,将通过筛选的文章存入数据库,精确筛选得到与主题最为相关的URL链接。
7.一种高速精准获取数据的系统,其特征在于,所述系统通过权利要求1至6中任一项所述的方法进行高速精准获取数据,所述系统包括:
URL生成模块,用于根据用户的搜索关键词配置要搜索的URL链接,形成URL请求表;
调度模块,用于根据URL请求表对URL请求进行调度与过滤;
验证码快速识别模块,用于对待识别的验证码进行分类并识别;
爬行模块,用于对网页内容进行爬取,
内容提取训练模块,用于创建数据提取表达式,应用于后续网页的内容提取工作。
8.根据权利要求7所述的系统,其特征在于,所述验证码快速识别模块包括基于图像识别模型的验证码分类器,用于将验证码分类为:纯数字、纯英文、数英组合、词序、滑块、其他中的一种。
9.根据权利要求8所述的系统,其特征在于,所述验证码分类器的构建过程为:
爬取多张验证码图片,分为可自动识别验证码图片和需人工识别验证码图片;
将可自动识别验证码图片和需人工识别验证码图片分别划分训练集与测试集;
对图片进行数值处理,转换成特征方向梯度直方图;
使用支持向量机算法对训练集进行训练学习,然后带入测试集测试结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010104603.1A CN111324797B (zh) | 2020-02-20 | 2020-02-20 | 一种高速精准获取数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010104603.1A CN111324797B (zh) | 2020-02-20 | 2020-02-20 | 一种高速精准获取数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324797A CN111324797A (zh) | 2020-06-23 |
CN111324797B true CN111324797B (zh) | 2023-08-11 |
Family
ID=71165315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010104603.1A Active CN111324797B (zh) | 2020-02-20 | 2020-02-20 | 一种高速精准获取数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324797B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704711A (zh) * | 2019-09-11 | 2020-01-17 | 中国海洋大学 | 面向终生学习的物体自动识别系统 |
CN111833198A (zh) * | 2020-07-20 | 2020-10-27 | 民生科技有限责任公司 | 一种智能处理保险条款的方法 |
CN112115330A (zh) * | 2020-09-18 | 2020-12-22 | 电子科技大学成都研究院 | 一种优化定位精度及爬取效率的爬虫方法 |
CN113065051B (zh) * | 2021-04-02 | 2022-04-15 | 西南石油大学 | 一种可视化农业大数据分析交互系统 |
CN113536085B (zh) * | 2021-06-23 | 2023-05-19 | 西华大学 | 基于组合预测法的主题词搜索爬虫调度方法及其系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930059A (zh) * | 2012-11-26 | 2013-02-13 | 电子科技大学 | 一种聚焦爬虫的设计方法 |
CN103984753A (zh) * | 2014-05-28 | 2014-08-13 | 北京京东尚科信息技术有限公司 | 一种网络爬虫去重特征值的提取方法和装置 |
CN107704515A (zh) * | 2017-09-01 | 2018-02-16 | 安徽简道科技有限公司 | 基于互联网数据抓取系统的数据抓取方法 |
CN109033195A (zh) * | 2018-06-28 | 2018-12-18 | 上海盛付通电子支付服务有限公司 | 网页信息的获取方法、获取设备及计算机可读介质 |
CN109657118A (zh) * | 2018-11-21 | 2019-04-19 | 安徽云融信息技术有限公司 | 一种分布式网络爬虫的url去重方法及其系统 |
CN109783619A (zh) * | 2018-12-14 | 2019-05-21 | 广东创我科技发展有限公司 | 一种数据过滤挖掘方法 |
-
2020
- 2020-02-20 CN CN202010104603.1A patent/CN111324797B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930059A (zh) * | 2012-11-26 | 2013-02-13 | 电子科技大学 | 一种聚焦爬虫的设计方法 |
CN103984753A (zh) * | 2014-05-28 | 2014-08-13 | 北京京东尚科信息技术有限公司 | 一种网络爬虫去重特征值的提取方法和装置 |
CN107704515A (zh) * | 2017-09-01 | 2018-02-16 | 安徽简道科技有限公司 | 基于互联网数据抓取系统的数据抓取方法 |
CN109033195A (zh) * | 2018-06-28 | 2018-12-18 | 上海盛付通电子支付服务有限公司 | 网页信息的获取方法、获取设备及计算机可读介质 |
CN109657118A (zh) * | 2018-11-21 | 2019-04-19 | 安徽云融信息技术有限公司 | 一种分布式网络爬虫的url去重方法及其系统 |
CN109783619A (zh) * | 2018-12-14 | 2019-05-21 | 广东创我科技发展有限公司 | 一种数据过滤挖掘方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111324797A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324797B (zh) | 一种高速精准获取数据的方法和装置 | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
Di Lucca et al. | An approach to identify duplicated web pages | |
CN107229668B (zh) | 一种基于关键词匹配的正文抽取方法 | |
US20170185680A1 (en) | Chinese website classification method and system based on characteristic analysis of website homepage | |
CN112749284B (zh) | 知识图谱构建方法、装置、设备及存储介质 | |
CN111310476B (zh) | 一种使用基于方面的情感分析方法的舆情监控方法和系统 | |
CN107844533A (zh) | 一种智能问答系统及分析方法 | |
CN109726281A (zh) | 一种文本摘要生成方法、智能终端及存储介质 | |
CA3217721A1 (en) | Commodity short title generation method and apparatus | |
CN107193987A (zh) | 获取与页面相关的搜索词的方法、装置和系统 | |
CN109344355B (zh) | 针对网页变化的自动回归检测与块匹配自适应方法和装置 | |
CN106649362A (zh) | 网页爬取方法和装置 | |
US20200250015A1 (en) | Api mashup exploration and recommendation | |
CN105956181A (zh) | 搜索方法及装置 | |
Mehta et al. | DOM tree based approach for web content extraction | |
Murthy | XML URL classification based on their semantic structure orientation for web mining applications | |
Munot et al. | Conceptual framework for abstractive text summarization | |
CN109992666A (zh) | 用于处理特征库的方法、装置和非暂时性机器可读介质 | |
Xu et al. | Estimating similarity of rich internet pages using visual information | |
CN114417860A (zh) | 一种信息检测方法、装置及设备 | |
CN112115269A (zh) | 一种基于爬虫的网页自动分类方法 | |
Mishchenko et al. | Method for detecting fake news based on natural language processing | |
Rai et al. | Survey on Existing Text Mining Frameworks and A Proposed Idealistic Framework for Text Mining by Integrating IE and KDD | |
Htwe et al. | Noise removing from Web pages using neural network |
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 |