首页> 中国专利> 一种自动化垂直细分领域的爬虫爬取方法及其管理系统

一种自动化垂直细分领域的爬虫爬取方法及其管理系统

摘要

本发明涉及爬虫爬取和管理调度技术,旨在提供一种自动化垂直细分领域的爬虫爬取方法及其管理系统。该种自动化垂直细分领域的爬虫爬取方法包括过程:爬虫运行时间预测;根据预测时间、并行数进行批量爬虫调度优化;爬虫爬取。本发明在垂直细分领域爬虫的爬取效率上比现有技术更加高效,结合垂直细分爬虫的特征开创地引入了爬虫的时间预测模型,结合最长处理时间优先算法进行并行爬虫的高效调度,节省爬取时间。

著录项

  • 公开/公告号CN107590188A

    专利类型发明专利

  • 公开/公告日2018-01-16

    原文格式PDF

  • 申请/专利权人 杭州灵皓科技有限公司;

    申请/专利号CN201710673166.3

  • 发明设计人 郑小林;张建勇;林炜华;

    申请日2017-08-08

  • 分类号G06F17/30(20060101);G06F17/18(20060101);

  • 代理机构33212 杭州中成专利事务所有限公司;

  • 代理人周世骏

  • 地址 310030 浙江省杭州市西湖区耀江文鼎苑8-1603室

  • 入库时间 2023-06-19 04:19:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-04-24

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F16/955 变更前: 变更后: 申请日:20170808

    专利权人的姓名或者名称、地址的变更

  • 2020-02-14

    授权

    授权

  • 2018-02-09

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20170808

    实质审查的生效

  • 2018-01-16

    公开

    公开

说明书

技术领域

本发明是关于爬虫爬取和管理调度技术领域,特别涉及一种自动化垂直细分领域的爬虫爬取方法及其管理系统。

背景技术

数据爆炸的信息时代虽然包含了各行各业的海量资讯和数据,但是人类接受信息的数量和处理信息的能力却是有限的,我们往往被大量多余无用的信息占去宝贵的时间,人们获取个性化信息的难度不断加大,因此,各个垂直细分领域和个性化推荐应运而生。垂直细分领域把注意力和服务聚焦于某个具体的类别,对垂直细分领域的数据爬取工作是个性化推荐等服务的重要和基础工作。

网络爬虫是一种自动获取网页内容,并对这些信息做一些结构化处理、持久化等操作的程序。从功能上考虑,爬虫大致可以分为全网爬虫和垂直爬虫。全网爬虫主要是服务于搜索引擎的数据获取,爬取深度大,可以高效抓取海量数据;垂直爬虫则是针对特定网站或特定页面,爬取深度小,爬取目标往往带有明显的结构化,服务于垂直领域的特殊数据采集。

一般的全网爬虫通过输入起始url队列,采用深度优先或广度优先算法对url进行层层解析,加上分布式平台等框架,能够达到高效抓取海量数据的效果。然而在垂直细分领域,需要对多目标的特定数据特征进行采集的场景中,全网爬虫得到的数据质量并不理想。因此对垂直细分领域爬虫的定制、调度和管理研究显得尤为迫切。在爬虫数量上升到一定量级时,我们需要将爬虫配置、爬虫调度、爬虫执行、数据处理等环节紧密结合,从而形成一个完善的垂直领域爬虫管理调度框架。

与本发明最相似的实现方案有下面几种,中国发明专利申请:“网页内容抽取方法、装置及系统”(申请号:201510124714.8)、“一种基于网页爬取的爬虫技术”(申请号:201310040090.2)、“基于新闻去重的网页爬虫的构建方法”(申请号:200910153588.3)、“一种插件式可配置的垂直领域网络爬虫实现方法”(申请号:201510131253.7)、“基于加权轮叫算法的分布式爬虫任务调度方法”(申请号:201410073829.4)。

发明1(网页内容抽取方法、装置及系统)提出的一种网页内容抽取方法、装置及系统,业务层向抽取系统发送抽取网页URL请求;抽取系统根据抽取网页URL请求,调用网页爬虫系统爬取URL指定的页面原始内容;抽取系统以所述模板协议文件为匹配标准,对页面原始内容进行抽取,并将抽取的内容返回给业务层,本发明充分利用后台爬取网页的能力,同时通过解析原始网页与抽取模板实现抽取原始网页指定标签内容的能力,该方案适应所有Web网页版式抽取指定网页标签内容,提高了抽取原始网页的能力以及网页内容抽取的灵活性。但该发明对目标网站具有较高的格式要求,对于格式不太统一的目标网页的爬取效果不理想,因此不适用垂直细分领域具有多样化结构的网页爬取。

发明2基于用户设定的互联网对象,根据用户创建的任务,从互联网爬取对应的资源、重写URL并进行存储,实现有针对性的对互联网信息进行采集;本发明实施例中,为了提高系统的吞吐量和资源利用率,在接收任务请求后,还把任务拆分成任务分片,每个任务分片仅包含一个网站,每个任务分片由多个爬虫进行并行执行,这样,任务调度粒度实际上是任务分片,这样可以提高系统的吞吐量和资源利用率。此发明仅仅是返回用户请求的网页内容以及相关的链接,并没有做进一步的处理;当爬虫任务数量规模扩大,而并行能力有限的情况下,该发明并不能充分利用并行性,达到最优的爬取用时。

发明3基于新闻去重的网页爬虫的构建方法,技术构思是:将新闻标题的文本利用中文分词技术提取出文本中的关键词以及每个关键词的权重;根据经验,选取该文本中N个权重最高的关键词构成(关键词,权重)的集合C={(t1,w1),(t2,w2),(t3,w3),……(tN,wN)},其中:ti:第i个关键词;wi:第i个关键词的权重;将集合C中的元素根据权重wi进行从大到小的排序;将新闻集中的每个子集Ci中的元素根据其关键词的权重进行从大到小的排序;设定C与Ci之间的相似度的阈值,所述的相似度由两集合中具有相同排序位置的关键词个数来表征;将集合C与新闻集中的每个Ci进行比对,判断它们的相似度是否高于所述的阈值;若高于所述的阈值,则认为C为重复新闻;若低于所述的阈值,则认为C为非重复新闻。相比于该算法,simhash考虑的因素更加全面,而算法复杂度也不高,准确性更强。

发明4公开了一种插件式可配置的垂直领域网络爬虫实现方法,包括抓取阶段和抽取阶段。其中,抓取阶段包括抓取配置阶段和抓取程序执行阶段,抽取阶段包括抽取配置阶段和抽取程序执行阶段。本发明能够通过配置的方式实现多个领域的网页抓取和信息抽取,并且精确度高,既能解决传统搜索引擎意图不明、精确度不高的缺点,又能实现多个领域的网页抓取和信息提取。该发明同样针对垂直细分领域定制爬虫,但是通过配置文件定义抓取参数和解析参数的方法灵活性不高,用户体验性较差;除此之外,该发明也没有考虑爬虫并行性的问题,因此效率不高。

发明5提出了一种基于加权轮叫算法的分布式爬虫任务调度方法,包括1)根据规模不同,将网络爬虫分为单机多线程、同构集中式、异构集中式、小型分布式和大型分布式五类爬虫;2)主从式架构部署;3)当爬虫节点第一次连接到主控节点时,主控节点给予它初始权值;4)主控节点根据基于加权轮叫的调度算法,不断选择出一个爬虫节点,将一个待爬取的URL任务分配给它;5)每当爬虫节点爬取完一个URL任务时,将结果返回给主控节点,主控节点更新该爬虫节点的权值。该发明通过爬虫节点的最近任务完成时间和未完成的任务数的权值计算方法更新该爬虫节点的权值,对低于主控节点权值的爬虫节点进行下一个任务的分配,在调度过程中并没有考虑到爬虫的预计时长,因此不能最大限度地优化调度。

上面5个专利虽然涉及了爬虫的调度策略以及对爬虫内容的去重,但聚焦于垂直领域个性化配置的爬虫,它们存在以下的不足:

1、都是比较通用性的方法,在需要大量定制爬虫的应用场景中,无法对爬虫运行时间进行预测和高效调度;

2、没有形成一套从爬虫配置、爬虫调度、爬虫执行、数据处理整个相对完善的系统。

发明内容

本发明的主要目的在于克服现有技术中的不足,提供一种基于个性化定制爬虫的自动化垂直细分领域的爬虫爬取和管理调度方法。为解决上述技术问题,本发明的解决方案是:

提供一种自动化垂直细分领域的爬虫爬取方法,包括下述过程:

一、爬虫运行时间预测;

在并行通道和爬虫任务确定的情况下,即爬虫的并行数和目标网站确定的情况下,对每个新的爬虫任务,利用线性回归模型预测出爬虫运行时间;

二、根据预测时间、并行数进行批量爬虫调度优化;

设爬虫的并行数为m,有n个独立的爬虫任务,爬虫任务i对应的预测运行时间,采用最长处理时间优先算法(Longest Processing Time,LPT algorithm),使得n个爬虫任务在尽可能短的时间内由m个并行通道完成;

最长处理时间优先算法是将n个爬虫任务根据预测出爬虫运行时间长短排序,然后将最长时间的爬虫任务依次分配给结束时间最早的并行通道,(根据论文“Bounds onMultiprocessing Timing Anomalies”中的证明)这样的贪心策略能够得到(4/3-1/(3m))OPT的上界,其中m为爬虫的并行数,OPT为最优时间(理论最短运行时间);

三、爬虫爬取;

爬虫爬取包括爬取核心部分和数据处理部分,以实现在自动化垂直细分领域爬虫对目标网站的爬取;

爬取核心部分用于向目标网站(爬虫目标网站)发送请求,并对返回结果进行解析和内容提取,得到结构化的内容;

数据处理部分用于对爬取核心部分解析后的结构化内容,进行过滤、筛选和数据库持久化。

在本发明中,所述过程一中的线性回归模型每间隔一定时间进行训练(训练的样本是历史爬虫的输入参数和实际运行时间,所以在最开始需要进行一定的爬虫运行数据积累,之后就不断更新模型参数),线性回归模型的训练具体包括下述步骤:

步骤1a):将爬虫的启动参数中的每个定性变量(目标网站、爬取数据类别)量化处理,对于每个定性变量,如果有k个取值可能(k是常数,用于表示目标网站的个数、爬取数据的类别数),则转化为k-1个虚拟自变量0或者1(爬取数据类别有链接、短文本、长文本、图片4类,则引入3个0-1变量来表示数据类别这个定性变量;目标网站有k个,则引入k-1个0-1变量来表示目标网站;减1是因为如果用k个0-1自变量,则构成完全多重共线性,而多元线性回归模型假设之一是变量之间不存在线性关系,即任何一个变量都不能是其他变量的线性组合,所以必须减1),加上定量变量(请求页面数量、每次请求间隔时间),得到线性回归特征值,即量化输入特征;

定义爬虫的量化输入特征为Xi=(x1,...,xD)T,爬虫运行时间ti,则得到线性回归模型:

ti=t(Xi,W)=WTφ(Xi)(1.1)

其中,W=(ω0,...,ωD)T,φ(Xi)=(1,x1,...,xD)T;所述D为输入特征Xi的特征数量,xi(i=1,2,…,D)为自变量,ωi(i=0,1,…,D)为模型待求参数;

步骤1b):利用最小二乘法,使得预测时间与实际时间的平方和达到最小,定义损失函数:

其中,N为样本数,t=(t1,...,tN)T,X=(X1,...,XN)T;所述ti(i=1,2,…,N)为爬虫i实际运行时间,Xi(i=1,2…,N)为爬虫i的输入特征向量,W为待求参数向量;

步骤1c):用公式(1.2)对W求偏导,让偏导等于0,得到最优参数W,使E(W)最小:

W=(XTX)-1XTt(1.3)

其中,所述X如上所述为输入特征向量Xi构成的矩阵,t如上所述为爬虫实际运行时间构成的向量;

训练出模型参数W,即能在爬虫爬取前,用于预测将要运行爬虫的每个爬虫任务的爬虫运行时间。

在本发明中,所述过程二中,最长处理时间优先算法具体是指:

如果爬虫任务数n≤并行数m,则将每个爬虫任务分别分配给单个批处理程序(即并行程序,最短调度时间即等于n个爬虫任务中的预测运行时间的最大值;

如果爬虫任务数n>并行数m,重复执行如下操作直到n个爬虫任务都被分配:

步骤2a):将n个爬虫任务按照预测运行时间建成最大堆H1;

步骤2b):将m个并行通道按照可用时刻建立一个最小堆H2;

步骤2c):将H1的堆顶作业分配给H2的堆顶通道;

步骤2d):将H2的堆顶通道加上H1的堆顶作业的处理时间重新插入H2中;

步骤2e):将堆H1的堆顶元素删除;

步骤2f):重复执行步骤步骤2c)至步骤2e),直到H1中的元素全部删除,堆H2的堆顶元素就是最短调度时间。

在本发明中,所述过程三的爬虫爬取,具体包括下述步骤:

步骤3a):引擎打开一个网站,找到处理该网站的spider并向该spider请求第一个要爬取的URL;

步骤3b):引擎从spider中获取到第一个要爬取的URL并在调度器中使用Request调度;

步骤3c):引擎向调度器请求下一个要爬取的URL;

步骤3d):调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件转发给下载器;

步骤3e):一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件发送给引擎;

步骤3f):引擎从下载器中接收到Response并通过spider中间件发送给spider处理;

步骤3g):spider处理Response并返回爬取到的item以及新的Request给引擎;

步骤3h):引擎将爬取到的item给项目管道进一步对数据进行筛选,清洗和持久化操作,将Request给调度器;

步骤3i):跳到步骤3b)重复,直到调度器中没有更多的request,引擎关闭该网站。

在本发明中,所述过程三中,爬取核心部分利用simhash算法将网页内容转化为低维向量进行相似度计算,对近相似网页进行去重,具体包括下述步骤:

步骤i):从数据库中提取出前n天(这里的天数取决于具体领域的传播特点)内爬取过的网页内容的simhash,并且针对爬取到的新网页(提取出内容时),对于每个网页进行下述操作:

分词:提取出该爬取到的新网页的文本内容,进行分词得到特征词,然后去掉特征词中的停用词,再计算出每个特征词的词项频率(即词语在文本中出现的次数与该文本总词数之比)作为权重;

量化:对每个特征词进行hash运算得到0-1hash串;

合并:对各个特征词计算出的hash序列值(即指0-1hash串),先乘以该特征值对应的词项频率权重,然后求所有hash序列值各个bit位的累加和,变成一个序列串;

降维:将累加后的序列串变成0-1串(若每一位大于0则记为1,小于0则记为0),即得到该网页内容的最终simhash值;

步骤ii):近相似网页过滤:将爬取到的新网页的simhash值和已有网页的simhash值对比,计算两个hash值的海明距离,若海明距离小于3,则认为这两个网页为近相似,舍弃刚刚抓取的新网页;否则,存入数据库,并更新已有simhash库;

所述simhash库中有所有爬取过的网页的simhash值。

在本发明中,所述爬取核心部分只对新闻网页进行近相似网页去重。

提供一种用于所述自动化垂直细分领域的爬虫爬取方法的管理系统,用于对爬虫进行参数配置、操作管理、实时监控,所述管理系统包括爬虫爬取核心层、爬虫控制管理层;

所述爬虫爬取核心层基于Scrapy爬虫应用框架,Scrapy使用Twisted异步网络库处理网络通讯,且包含有各种中间件接口,能够完成各种需求;

爬虫爬取核心层具体包括下述组件:

引擎:控制整个系统的数据处理流程,进行事务处理的触发;

调度器:从引擎接受请求并列入队列,在引擎发出请求后返回给引擎;

下载器:抓取网页并将网页内容返回给spider;

spider:定义特定网站的抓取和解析规则(利用xpath等解析工具);

项目管道:处理从spider中返回的item,主要任务是清洗、验证和存储数据;

下载器中间件:处理引擎和下载器之间的请求及响应;

spider中间件:处理spider的响应输入和请求输出;

调度中间件:处理引擎发送到调度的请求和响应;

所述爬虫控制管理层包括爬虫管理后台模块、爬虫服务层模块;

爬虫管理后台模块采用MVC模型,通过调用爬虫服务层模块,对爬虫服务层模块进行友好的界面化管理;界面化管理的管理服务包括爬虫的参数配置、批量爬虫新建、批量爬虫配置、爬虫启动、批量爬虫启动、爬虫定时、爬虫日志查看、爬虫结果查看、爬虫日志持久化;

爬虫的参数配置的流程为:获取爬虫服务层模块提供的全部爬虫信息并存储到数据库,为每个爬虫配置参数信息,配置可启动的批量爬虫;

爬虫启动的流程为:获取该爬虫的参数配置,根据参数配置准备启动爬虫的请求,向爬虫服务层模块发送启动爬虫的请求,如果成功记录爬虫的jobid,定期向爬虫服务层模块发送请求获取该爬虫的状态直到爬虫结束;

批量爬虫启动的流程为:获取批量爬虫的配置,根据爬虫的配置次序按照爬虫启动流程依次执行每个爬虫,发送请求将爬虫结果持久化;

定时批量爬虫的流程为:选择批量爬虫,设置起始时间点,开启定时爬虫;每次定时开始时获取该批量爬虫的配置,判断其定时是否已经被取消,如果已被取消,则取消定时,记录日志;如果没有被取消执行批量爬虫的启动流程;如果服务器重启,则通过配置容器的方式在工程启动的时候将工程原先设置的定时全部启动;

爬虫日志查看的流程为:将爬虫的project、spider、page、pageSize作为参数向爬虫服务层模块发送请求获取对应爬虫的日志信息

爬虫服务层模块将爬虫爬取核心层的操作(爬虫的启动、暂停、运行监控、日志查看、爬取结果查看、持久化等)封装为web service,并提供JSON API的调用方式来部署与控制爬虫,从而支持远程调用以及并行扩展(即通过将爬虫的各种操作统一在网络服务中,方便整个爬虫系统的管理和调度)。

与现有技术相比,本发明的有益效果是:

在垂直细分领域爬虫的爬取效率上比现有技术更加高效,结合垂直细分爬虫的特征开创地引入了爬虫的时间预测模型,结合最长处理时间优先算法进行并行爬虫的高效调度,节省爬取时间。

将垂直细分领域爬虫的配置、管理、调度、爬取和数据处理整个流程组合成一个自动化的高效系统,易于管理(实时监测爬虫状态,定时爬取并进行数据处理)、可扩展性高(配置爬虫方便快捷)。

附图说明

图1为爬虫调度管理算法整体流程。

图2为爬虫管理系统框架图。

图3为爬虫核心层算法流程图。

具体实施方式

下面结合附图与具体实施方式对本发明作进一步详细描述:

如图2所示的一种用于自动化垂直细分领域的爬虫爬取方法的管理系统包括爬虫爬取核心层、爬虫控制管理层,用于对爬虫进行参数配置、操作管理、实时监控,所述管理系统。

所述爬虫爬取核心层基于Scrapy爬虫应用框架,Scrapy使用Twisted异步网络库处理网络通讯,架构清晰,且包含有各种中间件接口,能够灵活完成各种需求。图3为爬虫核心层算法流程图。

爬虫爬取核心层具体包括下述组件:

引擎:控制整个系统的数据处理流程,进行事务处理的触发;

调度器:从引擎接受请求并列入队列,在引擎发出请求后返回给引擎;

下载器:抓取网页并将网页内容返回给spider;

spider:定义特定网站的抓取和解析规则(利用xpath等解析工具);

项目管道:处理从spider中返回的item,主要任务是清洗、验证和存储数据;

下载器中间件:处理引擎和下载器之间的请求及响应;

spider中间件:处理spider的响应输入和请求输出;

调度中间件:处理引擎发送到调度的请求和响应;

所述爬虫控制管理层包括爬虫管理后台模块、爬虫服务层模块。

爬虫管理后台模块采用MVC模型,通过调用爬虫服务层模块,对爬虫服务层模块进行友好的界面化管理;界面化管理的管理服务包括爬虫的参数配置、批量爬虫新建、批量爬虫配置、爬虫启动、批量爬虫启动、爬虫定时、爬虫日志查看、爬虫结果查看、爬虫日志持久化。

爬虫的参数配置的流程为:获取爬虫服务层模块提供的全部爬虫信息并存储到数据库,为每个爬虫配置参数信息,配置可启动的批量爬虫;

爬虫启动的流程为:获取该爬虫的参数配置,根据参数配置准备启动爬虫的请求,向爬虫服务层模块发送启动爬虫的请求,如果成功记录爬虫的jobid,定期向爬虫服务层模块发送请求获取该爬虫的状态直到爬虫结束;

批量爬虫启动的流程为:获取批量爬虫的配置,根据爬虫的配置次序按照爬虫启动流程依次执行每个爬虫,发送请求将爬虫结果持久化;

定时批量爬虫的流程为:选择批量爬虫,设置起始时间点,开启定时爬虫;每次定时开始时获取该批量爬虫的配置,判断其定时是否已经被取消,如果已被取消,则取消定时,记录日志;如果没有被取消执行批量爬虫的启动流程;如果服务器重启,则通过配置容器的方式在工程启动的时候将工程原先设置的定时全部启动;

爬虫日志查看的流程为:将爬虫的project、spider、page、pageSize作为参数向爬虫服务层模块发送请求获取对应爬虫的日志信息

爬虫服务层模块将爬虫爬取核心层的爬虫的启动、暂停、运行监控、日志查看、爬取结果查看、持久化等操作封装为web service,并提供JSON API的调用方式来部署与控制爬虫,从而支持远程调用以及并行扩展,即通过将爬虫的各种操作统一在网络服务中,方便整个爬虫系统的管理和调度。

如图1所示的一种自动化垂直细分领域的爬虫爬取方法,包括下述过程:

一、爬虫运行时间预测;

二、根据预测时间、并行数进行批量爬虫调度优化;

三、爬虫爬取。

过程一:

垂直领域细分爬虫的目标网站来源非常多,对于新闻类信息而言更新尤其频繁,因此每日都要启动大量单独的爬虫任务,每个独立爬虫因目标网站和爬取参数的不同在爬取时间上也表现出很大的差异性。在并行通道和爬虫任务确定的情况下,即爬虫的并行数和目标网站确定的情况下,对每个新的爬虫任务,利用线性回归模型准确预测出爬虫运行时间,优化爬虫调度顺序,能够极大提高爬取效率,节省爬取时间。

每个独立爬虫的运行时间主要受到目标网站和爬虫参数的影响,因此对已经完成的爬虫任务建立时间预测多元线性回归模型能够有效预测出新任务的大致运行时间。

线性回归模型的训练具体包括下述步骤:

步骤1a):将参数中的每个定性变量量化处理,设定定性变量有k个(例如k个类别信息),转化为k-1个0-1虚拟自变量,加上定量变量(请求页面数量、每次请求间隔时间),得到线性回归特征值;

其中,所述k是常数,用于表示目标网站的个数、爬取数据的类别数;

定义爬虫的量化输入特征为Xi=(x1,...,xD)T,爬虫运行时间ti,则可得到线性回归模型:

ti=t(Xi,W)=WTφ(Xi)(1.1)

其中,W=(ω0,...,ωD)T,φ(Xi)=(1,x1,...,xD)T;所述D为输入特征Xi的特征数量,xi(i=1,2,…,D)为自变量,ωi(i=0,1,…,D)为模型待求参数;

步骤1b):利用最小二乘法,使得预测时间与实际时间的平方和达到最小,定义损失函数:

其中,N为样本数,t=(t1,...,tN)T,X=(X1,...,XN)T;所述ti(i=1,2,…,N)为爬虫i实际运行时间,Xi(i=1,2…,N)为爬虫i的输入特征向量,W为待求参数向量;

步骤1c):用公式(1.2)对W求偏导,让偏导等于0,得到最优参数W,使E(W)最小:

W=(XTX)-1XTt(1.3)

其中,所述X如上所述为输入特征向量Xi构成的矩阵,t如上所述为爬虫实际运行时间构成的向量。

过程二:

设爬虫的并行数为m,有n个独立的爬虫任务,爬虫任务i对应的预测运行时间ti,采用最长处理时间优先算法(Longest>

最长处理时间优先算法是将n个爬虫任务根据预测出爬虫运行时间长短排序,然后将最长时间的爬虫任务依次分配给结束时间最早的并行通道,这样的贪心策略能够得到(4/3-1/3m)OPT的上界。具体是指:

如果爬虫任务数n≤并行数m,则将爬虫任务i分配给批处理程序i,最短调度时间即等于n个爬虫任务中的预测运行时间的最大值;

如果爬虫任务数n>并行数m,重复执行如下操作直到n个爬虫任务都被分配:

步骤2a):将n个爬虫任务按照预测运行时间建成最大堆H1;

步骤2b):将m个并行通道按照可用时刻建立一个最小堆H2;

步骤2c):将H1的堆顶作业分配给H2的堆顶通道;

步骤2d):将H2的堆顶通道加上H1的堆顶作业的处理时间重新插入H2中;

步骤2e):将堆H1的堆顶元素删除;

步骤2f):重复执行步骤步骤2c)至步骤2e),直到H1中的元素全部删除,堆H2的堆顶元素就是最短调度时间。

过程三:

爬虫爬取包括爬取核心部分和数据处理部分,以实现在自动化垂直细分领域爬虫对目标网站的爬取。爬取核心部分用于向爬虫目标网站发送请求,并对返回结果进行解析和内容提取,得到结构化的内容。数据处理部分用于对爬取核心部分解析后的结构化内容,进行过滤、筛选和数据库持久化。

爬虫爬取的具体步骤如下所述:

步骤3a):引擎打开一个网站,找到处理该网站的spider并向该spider请求第一个要爬取的URL;

步骤3b):引擎从spider中获取到第一个要爬取的URL并在调度器中使用Request调度;

步骤3c):引擎向调度器请求下一个要爬取的URL;

步骤3d):调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件转发给下载器;

步骤3e):一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件发送给引擎;

步骤3f):引擎从下载器中接收到Response并通过spider中间件发送给spider处理;

步骤3g):spider处理Response并返回爬取到的item以及新的Request给引擎;

步骤3h):引擎将爬取到的item给项目管道进一步对数据进行筛选,清洗和持久化操作,将Request给调度器;

步骤3i):跳到步骤3b)重复,直到调度器中没有更多的request,引擎关闭该网站。

由于本发明针对的是高度垂直细分领域的定制爬虫,主题相似,而目前互联网存在着大量镜像、内容复制、嵌入广告、少量修改的网页。尤其是新闻内容,一条重要新闻可能在几天之内被多个站点重复发布。对于大量重复的网页,如果没有进行检测过滤,一方面会使得数据冗余,占据空间,另一方面在后续的数据使用如搜索引擎建立过程中也造成数据重复。因此加入近相似网页去重处理(尤其是爬取大文本新闻内容时)是一个必要的工作。

去重的主要思想是对比两个网页内容的相似度,设置相似度阈值,若高于阈值则认为是近相似网页,丢弃之。因此去重的关键点在于网页内容的相似度计算,本发明爬取核心部分利用simhash算法将网页内容转化为低维向量进行相似度计算,对近相似网页进行去重,具体包括下述步骤:

步骤i):对于(数据库中)前n天(这里的天数取决于具体领域的传播特点)内爬取过的网页内容和爬取的新网页,对于每个网页进行下述操作:

分词:提取出该网页的文本内容,进行分词得到特征词,然后去掉特征词中的停用词,再提取出每个特征词的tf-itf作为权重;

量化:对每个特征词进行hash运算得到0-1hash串;

合并:对各个特征词计算出的hash序列值,先乘以该特征值对应的词项频率权重,然后求所有hash序列值各个bit位的累加和,变成一个序列串;

降维:将累加后的序列串变成0-1串(若每一位大于0则记为1,小于0则记为0),即得到该网页内容的最终simhash值;

步骤ii):近相似网页过滤:将爬取的新网页的simhash值和已有网页的simhash值对比,计算两个hash值的海明距离,若海明距离小于3,则认为这两个网页为近相似,舍弃刚刚抓取的新网页;否则,存入数据库,并更新已有simhash库;

已有simhash库中有所有前n天内爬取过的网页的simhash值。

由于新闻网页的传播有一定的时效性,最新发布的转载新闻一般不会距离太久,因此需要计算的simhash网页数量不大,加上simhash算法的高效性,因此在时间和空间复杂度上对爬虫效率没有太大影响。

最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号