CN102402627B - 一种文章实时智能抓取系统和方法 - Google Patents
一种文章实时智能抓取系统和方法 Download PDFInfo
- Publication number
- CN102402627B CN102402627B CN 201110455139 CN201110455139A CN102402627B CN 102402627 B CN102402627 B CN 102402627B CN 201110455139 CN201110455139 CN 201110455139 CN 201110455139 A CN201110455139 A CN 201110455139A CN 102402627 B CN102402627 B CN 102402627B
- Authority
- CN
- China
- Prior art keywords
- task
- job
- time
- module
- extracting
- 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
Images
Abstract
一种文章实时智能抓取系统,包括实时抓取模块、网页抽取系统、文档近似排重模块、文档自动分类模块和文章发布模块。所述实时抓取模块还包括线上运行的7个模块:任务提取模块、任务解析模块、任务抓取时间范围检验模块、任务抓取时间间隔检验模块、任务调度模块、任务下载模块、任务抓取频率调整模块;还包括线下运行的3个模块:任务抓取时间范围发现模块、任务抓取时间间隔发现模块、免费代理收集和验证模块。
Description
技术领域
本发明涉及互联网技术中抓取技术、web挖掘技术、信息抽取技术、自然语言处理技术领域;可以应用于需要大规模精准、实时地抓取文章的门户网站、搜索引擎网站等互联网领域。
背景技术
互联网门户类网站每天都有大量的文章转载需求,并且对文章的质量要求很高。现有很多抓取系统可以满足这个需求,但是它们都困扰于下面三个问题:
1)采用机器自动生成抽取包装器技术的抓取系统可以大量抓取文章,但是无法做到文章的精准抽取,抓取文章的可用性低;
2)采用人工生成抽取包装器技术的抓取系统文章抽取结果精准,但是要对互联网上千个网站进行抽取包装器的生成和更新维护工作,普通垂直爬虫无法很好担负这一工作,只能依赖大量的人力参与;
3)安全、高效的实时抓取技术。在要求高实时性抓取的时候,需要对抓取网站服务器频繁的发起链接和下载请求,这将会给对方服务器造成很大的压力,进而会导致对方采用封禁策略如拒绝访问等来保证服务器正常工作,这将导致抓取失败。同时高实时的抓取需求,非常耗费网络、服务器等硬件资源,导致成本上升。
以下为本发明所涉及的一些关键技术及技术术语解释。
抽取包装器:网页信息抽取是信息抽取中的一类,网页信息抽取的包装器生成技术目前发展成为一个较为独立的领域。包装器是由一系列抽取规则以及应用这些规则的计算机代码组成的,专门从特定信息源中抽取需要的信息并返回结果的程序;
基于同站学习和自动规则生成的文章自动抽取算法:本发明包含的一个包装器自动生成算法,可以精准智能的从网页中抽取出文章信息;
同站学习:按网站为单位,收集一个网站足够量的网页,一起进行机器统计学习,进而从中生成需要的规则;
爬虫(或者抓取爬虫):抓取系统中单独指负责网页下载的模块;
本系统研发的抽取包装器包括两个库:
Style树或者路径库:
Style的集合库。Style指的是某个DOM节点在DOM树中进行节点上寻,直到到body节点,构建出的这样一条路径及其权重信息。在库中,路径都以网站为单位组织,同路径合并成一条,并记录频率作为权重;
模式库:
此处所谓模式包括:
1)一个是网页抽取系统中分段后每一段的如下特征码:
模式=md5((内容:text/img)+段落tag前向遍历序列+site name)+value
其中value是权重信息,也即模式的出现次数;
2)还有一个是对这些段进行统计学习后生成的自动正则:
模式=正则。
代理技术:
代理技术是指代理服务器接收客户请求后会检查验证其合法性,如其合法,代理服务器像一台客户机一样取回所需的信息再转发给客户;
实时抓取:
强调抓取的时效性的一种抓取技术。目标是抓取源站更新内容后能够实时抓取到。
发明内容
本发明较好的解决了上述问题。
根据本发明的文章实时智能抓取系统,包括实时抓取模块、网页抽取系统、文档近似排重模块、文档自动分类模块和文章发布模块。其中所述实时抓取模块包括如下线上运行子模块:
任务提取模块,从任务(job)集合中轮流提取一个job;
任务解析模块,对每一个任务(job)进行解析,解析结果将会形成一些属性和规则;
任务抓取时间范围检验模块,查询任务的时间范围参数,如果时间范围不包含当前时间,将不抓取,跳过本job,否则,进行抓取时间间隔检验;
任务抓取时间间隔检验模块,查询任务的抓取时间间隔,如果时间间隔指定下一次抓取时间大于当前,则将不抓取,跳过本job,否则,进行任务抓取;
任务调度模块,根据任务解析模块的job其它属性进行job调度,调度时候会判断,如果这个job以往已经存在,则不分发,仍然采用本地服务器来抓取;否则,选择服务器群中现jobs数目较少的一台服务器,以实现抓取任务的均衡,从而优化总体的抓取速度;同时考虑尽量避免一台服务器上同网站job太多,以防止单台服务器对单个网站抓取压力太大;
任务下载模块,进行任务的具体下载,去代理库中取适当数目的代理,一般是5个;如果没有代理可取,则采用非代理抓取;同时将无代理和上述5个代理合并,形成代理集合;根据解析得到的任务参数,从代理集合中随机选择一个代理,进行任务的本轮下载;
任务抓取频率调整模块,根据job的抓取间隔基数,如果本轮抓取发现更新,则随机减少下一轮次抓取时间间隔;如果没有发现更新,则随机放大下一轮次的抓取间隔;但是保证时间间隔是job的抓取间隔基数的[0.5,2]倍数范围内;
所述实时抓取模块还包括如下线下运行子模块:
任务抓取时间范围发现模块,执行历史抓取日志智能分析工作,从中分析出每一个任务(job)的时间范围;
任务抓取时间间隔发现模块,读入昨天的抓取日志,分析每一个job的一天所有轮次的抓取情况,从中分析出每一个job的更新情况;如果发现job的当前间隔基数保证了50%以上轮次可以抓取到更新,则不调整;否则适当放大当前间隔基数,以降低无谓抓取请求;
免费代理收集和验证模块,从互联网免费代理分享网站下载当天的免费代理集合,对这些免费代理进行验证;随机选择历史抓取链接形成验证url集合,使用每一个代理来执行若干次的url抓取,剔除掉不能成功抓取或者抓取速度太慢的代理,留下成功率高同时速度快的代理,形成当天的代理库,以为线上抓取提供代理支持。
本发明还提供了一种文章实时智能抓取方法,所述方法包括实时抓取步骤、网页抽取步骤、文档近似排重步骤、文章自动分类步骤和文章发布步骤;所述实时抓取步骤包括线上和线下运行子步骤,其中:
所述线上运行子步骤包括:
步骤1,从任务(job)集合中轮流提取一个job;
步骤2,job解析,对每一个job进行解析,解析结果将会形成一些属性和规则;
步骤3,时间范围判定,查询任务的时间范围参数,如果时间范围不包含当前时间,将不抓取,返回步骤1,否则进入下一步骤;
步骤4,时间间隔判定,查询任务的抓取时间间隔,如果时间间隔指定下一次抓取时间大于当前,则将不抓取,返回步骤1,否则进入下一步骤;
步骤5,job调度,根据任务解析模块的job其它属性进行job调度,调度时候会判断,如果这个job以往已经存在,则不分发,仍然采用本地服务器来抓取;否则,选择服务器群中现jobs数目较少的一台服务器,以实现抓取任务的均衡,从而优化总体的抓取速度;同时考虑尽量避免一台服务器上同网站job太多,以防止单台服务器对单个网站抓取压力太大;
步骤6,任务下载,去代理库中取适当数目的代理,一般是5个;如果没有代理可取,则采用非代理抓取;同时将无代理和上述5个代理合并,形成代理集合;根据解析得到的任务参数,从代理集合中随机选择一个代理,进行任务的本轮下载;
步骤7,抓取频率调整,根据job的抓取间隔基数,如果本轮抓取发现更新,则随机减少下一轮次抓取时间间隔;如果没有发现更新,则随机放大下一轮次的抓取间隔;但是保证时间间隔是job的抓取间隔基数的[0.5,2]倍数范围内;频率调整完成后,返回步骤1,重复执行整个流程;
所述实时抓取步骤还包括如下线下运行子步骤:
步骤1,分析日志发现时间范围,执行历史抓取日志智能分析工作,从中分析出每一个任务(job)的时间范围;
步骤2,分析日志发现新时间间隔,读入昨天的抓取日志,分析每一个job的一天所有轮次的抓取情况,从中分析出每一个job的更新情况;如果发现job的当前间隔基数保证了50%以上轮次可以抓取到更新,则不调整;否则适当放大当前间隔基数,以降低无谓抓取请求;
步骤3,免费代理搜集和验证,从互联网免费代理分享网站下载当天的免费代理集合,对这些免费代理进行验证;随机选择历史抓取链接形成验证url集合,使用每一个代理来执行若干次的url抓取,剔除掉不能成功抓取或者抓取速度太慢的代理,留下成功率高同时速度快的代理,形成当天的代理库,以为线上抓取提供代理支持。
本发明专利还具有更多传统抓取系统没有的优点:
1)通过同站学习可以自动将网站中非文章页面比如频道页、专题页、列表页、广告页过滤;
2)可以对抓取文章进行近似文档排重;
3)可以对抓取文章进行语义理解,自动分类,自动生成摘要和关键词;
4)可以准确寻找某文章数目50以内的分页序列并对分页内容进行顺序合并;
5)可以对网站抓取范围进行灵活配置。支持抓取网站、频道、任意页面上一个或多个列表区域所属的文章;
在实际应用中,本抓取系统文章抓取质量很高,可以直接对外发布面向用户,同时自动适应上千个抓取网站的模版变化,极大的减少了抓取需要的人力参与,在大面积改善门户类网站的新闻覆盖度和实时性同时,也降低了门户类网站的人力成本。
在所有门户类网站中,本专利都有应用场景,可以有效改善其新闻的覆盖度和实时性,同时降低人力成本。
同时新闻类搜索引擎中,本专利也可以应用。
本发明技术上主要包括如下几个关键点:
1)信息抽取技术(抽取包装器生成技术)
采用人工生成和维护抽取包装器的抓取系统,可以精准抽取文章信息,但是不能自动发现和适应抓取源的变化,及时修正包装器;从而导致文章抽取出现失败,且不能自动修复;相应,维护人力和成本太高;
现有采用智能技术如统计学习、最大熵模型、网页视觉分块算法等生成抽取包装器的抓取系统,可以做到自动维护抽取包装器,从而减少了人力成本;但是实际应用中,存在抽取错误(内容冗余和缺失)较多,对全互联网域的不同网站适应性不强的问题;有些不能做到包装器的及时更新修正,抓取失败多;
2)实时抓取技术
在要求高实时性抓取的时候,需要对抓取网站服务器频繁的发起链接和下载请求,如果不能做好频率控制,将给对方服务器造成很大的压力,进而会导致对方采用封禁策略如拒绝访问等来保证服务器正常工作,这将导致抓取失败。
同时高实时的抓取需求,极其耗费网络等硬件资源,导致成本上升。
现有很多抓取系统通过采用抓取频率控制、增加抓取服务器的方式来保障抓取的实时性。
3)大规模文档近似排重技术
现有很多技术和系统能对文档进行近似排重,本系统采用自己开发的关键词提取技术,结合倒排索引这个一高效查找模型,实现了大规模文档的快速近似排重。
4)文章自动关键词技术
常用的自动关键词技术,有两个缺点,一个是不能很好的发现新词和组合词,如“利比亚动乱”;另外就是经常会出现错词,准确度不够。
本系统对我们常用的关键词提取技术进行了改进,从而能够更多地发现新词和组合词,能够使关键词提取更准确。
附图说明
图1为本系统模块结构图;
图2为本系统数据流程图;
图3为实时抓取模块的线上模块结构图;
图4为实时抓取模块的线下模块结构图;
图5实时抓取模块的线上运行流程图;
图6实时抓取模块的线下运行流程图;
图7-10是一个抓取案例的附图;
具体实施方式
抓取系统共由5个模块或者子系统构成,如图1所示。包括:实时抓取模块,网页抽取系统,文档近似排重模块,文档自动分类模块,文章发布模块。
系统总体数据流程如图2所示,具体步骤如下:
步骤1,提交一个job或者一堆jobs给系统的实时抓取模块;实时抓取模块又可以主要分成jobs解析调度模块和爬虫下载模块(任务下载模块)两个主要步骤;
步骤2,实时抓取模块之jobs解析调度模块负责将每一个job解释成本系统规定的若干个规则,这些规则指定了下一步爬虫模块的具体抓取逻辑;同时,jobs解析调度模块还负责将每一个job调度分发到合适的某一台服务器上,以实现job的更快抓取和抽取,同时将维护总体服务器群的均衡;
步骤3,实时抓取之任务下载(爬虫下载)模块接受到每一个job的规则,按照这些规则指定的爬行逻辑,进行抓取;抓取结束后将在本地服务器上存档抓取网页结果同时索引这些结果以方便抽取模块按网站为单位载入这些网页结果;
步骤4,网页抽取系统定时查询本地抓取索引,发现新索引就通过索引将步骤3下载的所有网页按网站为单位载入系统,按照本发明包含的“基于同站学习和自动规则生成的文章自动抽取算法”进行具体抽取;抽取时如果抽取不成功将按网站为单位进行自动学习,从而自动生成抽取包装器,实现下一次的成功抓取;抽取还包括自动摘要模块、自动关键词生成模块,以生成抽取出文章的摘要、关键词信息;
步骤5,文档近似排重模块是服务器部署。步骤4抽取出的所有文章将通过网络传入文档近似排重服务器,进行文档近似排重;如果发现近似,将把文章丢弃;否则传入文档自动分类模块;
步骤6,文档自动分类模块也是服务器部署。步骤5排重后的文章集合将传入分类服务器,根据自动分类算法对文章进行自动分类,根据分类结果,指定每一篇文章的分类属性比如军事、历史等,同时还将剔除掉广告、色情等不良文章;分完类后的所有文章将在本地服务器上存档,同时建索引以方便下一步发布模块读取;
步骤7,文章发布模块定时查询本地索引,发现新索引就将通过索引将文章载入系统,通过网络发布到具体内容系统。
根据本发明的文章实时智能抓取系统,包括实时抓取模块、网页抽取系统、文档近似排重模块、文档自动分类模块和文章发布模块。
实时抓取模块的详细技术方案:
在要求高实时性抓取的时候,希望能够在1-3分钟内将对方网站更新内容抓取到,这需要对抓取网站服务器频繁的发起链接和下载请求,实际抓取中,这将导致对方服务器压力过大进而采取封禁策略,从而使我们抓取不稳定甚至失败。
同时高实时的抓取需求,极其耗费网络等硬件资源,导致成本上升。
现有很多抓取系统通过采用抓取频率控制、增加抓取服务器的方式来解决上述问题,保障抓取的实时性、安全性。
本发明专利的实时抓取模块通过综合采用任务(jobs)合理调度、任务抓取间隔动态自适应方法、任务每天抓取时间范围自动发现方法、自动代理收集和验证方法等技术,实现了不同的实时抓取方案。
和其它实时抓取技术相比,本方案成本更低、结构也更简单。
本实时抓取模块分线上和线下的两个模块。
包括线上运行的7个模块:任务提取模块、任务解析模块、任务抓取时间范围检验模块、任务抓取时间间隔检验模块、任务调度模块、任务下载模块、任务抓取频率调整模块;还包括线下运行的3个模块:任务抓取时间范围发现模块、任务抓取时间间隔发现模块、免费代理收集和验证模块。
任务提取模块,从任务(job)集合中轮流提取一个job;
任务解析模块,对每一个任务(job)进行解析,解析结果将会形成一些属性和规则;
任务抓取时间范围检验模块,查询任务的时间范围参数,如果时间范围不包含当前时间,将不抓取,跳过本job,否则,进行抓取时间间隔检验;
任务抓取时间间隔检验模块,查询任务的抓取时间间隔,如果时间间隔指定下一次抓取时间大于当前,则将不抓取,跳过本job,否则,进行任务抓取;
任务调度模块,根据任务解析模块的job其它属性进行job调度,调度时候会判断,如果这个job以往已经存在,则不分发,仍然采用本地服务器来抓取;否则,选择服务器群中现jobs数目较少的一台服务器,以实现抓取任务的均衡,从而优化总体的抓取速度;同时考虑尽量避免一台服务器上同网站job太多,以防止单台服务器对单个网站抓取压力太大;
任务下载模块,进行任务的具体下载,去代理库中取适当数目的代理,一般是5个;如果没有代理可取,则采用非代理抓取;同时将无代理和上述5个代理合并,形成代理集合;根据解析得到的任务参数,从代理集合中随机选择一个代理,进行任务的本轮下载;任务下载采用了传统的网页下载引擎;
任务抓取频率调整模块,根据job的抓取间隔基数,如果本轮抓取发现更新,则随机减少下一轮次抓取时间间隔;如果没有发现更新,则随机放大下一轮次的抓取间隔;但是保证时间间隔是job的抓取间隔基数的[0.5,2]倍数范围内;
所述实时抓取模块还包括如下线下运行子模块:
任务抓取时间范围发现模块,执行历史抓取日志智能分析工作,从中分析出每一个任务(job)的时间范围;
任务抓取时间间隔发现模块,读入昨天的抓取日志,分析每一个job的一天所有轮次的抓取情况,从中分析出每一个job的更新情况;如果发现job的当前间隔基数保证了50%以上轮次可以抓取到更新,则不调整;否则适当放大当前间隔基数,以降低无谓抓取请求;
免费代理收集和验证模块,从互联网免费代理分享网站下载当天的免费代理集合,对这些免费代理进行验证;随机选择历史抓取链接形成验证url集合,使用每一个代理来执行若干次的url抓取,剔除掉不能成功抓取或者抓取速度太慢的代理,留下成功率高同时速度快的代理,形成当天的代理库,以为线上抓取提供代理支持。在最理想的情况下,我们可以用5-10个代理来下载一个网站,与传统抓取引擎相比,这将大大降低单个抓取服务器的IP出现频率,一方面使我们的抓取网络质量有小幅度改善,另一方面使我们的单台服务器抓取被封禁风险大大降低。
线上模块执行了每一个任务的抓取,只要当前有抓取任务,就执行;线下模块只是为线上模块的运行提供数据和资源支持,比如一个更新的代理库等,线下模块将在每天空闲时间运行一次。由于运行比较耗时,所以放入线下,以不影响线上模块运行。
本实时抓取模块的线上运行流程如下(图5):
步骤1,从任务(job)集合中轮流提取一个job;
步骤2,job解析,对每一个job进行解析,解析结果将会形成一些属性和规则;
步骤3,时间范围判定,查询任务的时间范围参数,如果时间范围不包含当前时间,将不抓取,返回步骤1,否则进入下一步骤;
步骤4,时间间隔判定,查询任务的抓取时间间隔,如果时间间隔指定下一次抓取时间大于当前,则将不抓取,返回步骤1,否则进入下一步骤;
步骤5,job调度,根据任务解析模块的job其它属性进行job调度,调度时候会判断,如果这个job以往已经存在,则不分发,仍然采用本地服务器来抓取;否则,选择服务器群中现jobs数目较少的一台服务器,以实现抓取任务的均衡,从而优化总体的抓取速度;同时考虑尽量避免一台服务器上同网站job太多,以防止单台服务器对单个网站抓取压力太大;
步骤6,任务下载,去代理库中取适当数目的代理,一般是5个;如果没有代理可取,则采用非代理抓取;同时将无代理和上述5个代理合并,形成代理集合;根据解析得到的任务参数,从代理集合中随机选择一个代理,进行任务的本轮下载;
步骤7,抓取频率调整,根据job的抓取间隔基数,如果本轮抓取发现更新,则随机减少下一轮次抓取时间间隔,一般是减少0.2倍;如果没有发现更新,则随机放大下一轮次的抓取间隔,一般是0.2倍;最后要保证下一轮次的抓取时间间隔是job的抓取间隔基数的[0.5,2]倍数范围内;频率调整完成后,返回步骤1,重复执行整个流程;
本抓取系统的线下流程包括抓取时间范围发现,抓取时间间隔发现,代理收集和验证,这些步骤为上面线上抓取流程的工作提供了知识,比如job的时间范围、有效的代理等;
这一部分在线下运行,一般是抓取比较空闲的0-6点时间,一次结束。
其具体步骤如下(图6):
步骤1,分析日志发现新时间范围,执行历史抓取日志智能分析工作,从中分析出每一个任务(job)的时间范围;我们的方法是取最近7天的抓取日志,分析出每一天的第一次抓取到时间,每一天的最后一次抓取到时间;然后取7天的最小第一次抓取到时间,7天的最大最后一次抓取到时间,作为新的时间范围;
步骤2,分析日志发现新时间间隔,读入昨天的抓取日志,分析每一个job的一天所有轮次的抓取情况,从中分析出每一个job的更新情况;如果发现job的当前间隔基数保证了50%以上轮次可以抓取到更新,则不调整;否则适当放大当前间隔基数,以降低无谓抓取请求;
步骤3,免费代理搜集和验证,从互联网免费代理分享网站下载当天的免费代理集合,对这些免费代理进行验证;
验证方法是根据抓取历史记录,随机提取代理数目3倍的可抓取url;然后对这些代理的每一个,随机分配3个url供其抓取,成功一个将给加1分的奖励,失败一个将给减1分的惩罚;5秒内抓取成功将给与加5分的奖励,10秒内抓取到将给与加2分的奖励;
验证完成后,根据这些代理的得分,一般去除掉得分在2分一下的代理,从而剔除掉不能成功抓取或者抓取速度太慢的代理,留下成功率高同时速度快的代理,形成当天的代理库,以为线上抓取提供代理支持。
下面给出本系统的一个示例。
以抓取http://www.21cbh.com/channel/review/的为例,总个抓取系统的步骤如下:
步骤1,先从jobs集合中读入一个如图7格式的job;
步骤2,进入实时抓取模块,进行抓取。包括先进行job解析和调度,解析后产生job抓取的属性和规则,并调度到抓取集群中的某台机器上;然后进行网页抓取,抓取结束后得到一堆满足job抓取属性和规则的网页,并建索引以方便读取。这些网页都来自于图8所示区域。
步骤3,进入网页抽取模块,对步骤3产生的网页集合进行网页抽取。抽取成功,将产生这些网页对应的文章信息;如果抽取失败,没有发现抽取包装器,这些网页将进入抽取的学习环节,抽取结束,将不会输出具体文章信息,整个抓取流程将结束,转到步骤7;
步骤4,进入文档排重模块,对所有抽取的文档进行近似排重。剔除掉那些已经抓取到相似内容的文章;
步骤5,进入文档自动分类模块,对所有排重后的文章进行分类。得到其内容类别信息,比如:“http://www.21cbh.com/HTML/2011-12-22/wNMDQwXzM5MDUwNA.html”网页抽取后的文章,分类模块会给出“财经”类别信息;根据网页抽取后的文章信息及类别信息,形成文章集合,并建立索引以方便读取;
步骤6,进入文章发布模块,读取这些文章,发布到我们的内容发布系统中去;这些文章将能马上生成对外页面,供用户浏览;
步骤7,总个抓取流程结束。
其中所述的实时抓取模块,又分为线上和线下两个运行步骤。线上模块执行具体抓取工作,线下模块为线上模块的运行提供一些数据支持比如代理库等;
线下模块一般是每天0点左右执行一次,然后全天不再执行;线上模块是轮询执行,没隔30秒钟就执行一次。
以抓取http://www.21cbh.com/channel/review/的为例,总个抓取系统的实时抓取模块的线下运行步骤如下:
步骤1,分析日志发现新时间范围。分析如图7所示的job,最近7天抓取日志,分析它每天的第一次抓取到时间,最后一次抓取到时间,并统计,得到如下数据:
DAY 1 | DAY 2 | DAY 3 | DAY 4 | DAY 5 | DAY 6 | DAY 7 | |
每天第一次抓取到时间 | 02:13 | 03:10 | 02:05 | 01:25 | 04:56 | 03:11 | 04:16 |
每天最后一次抓取到时间 | 06:15 | 06:32 | 06:54 | 07:21 | 07:23 | 06:26 | 08:11 |
分析后,取7天的最小第一次抓取到时间,最大最后一次抓取到时间,得到这个job的新时间范围为:1点到8点;也即01-08,将修改job参数设置;修改后如下所示:
“2 248836 01-08”
步骤2,分析日志发现新时间间隔。分析图7所示job昨天所有轮次的抓取情况,根据数据,发现昨天共抓取了73次,其中32次抓取到更新内容,不到50%的比例,所以将放大时间间隔基数,默认放大0.2倍,新的时间间隔为298603;将修改job参数设置,修改后如下所示:
“2 298603 01-08”
步骤3,免费代理搜集和验证。从网上若干代理网址抓取一些免费代理信息,如图9所示,共得到12个代理。
然后对这些代理进行验证。验证方法是提供代理数目3倍的可抓取url;然后对这些代理的每一个,随机分配3个url供其抓取,成功一个将给加1分的奖励,失败一个将给减1分的惩罚;5秒内抓取成功将给与加5分的奖励,10秒内抓取到将给与加2分的奖励。
最后综合每一个代理的得分,去除掉得分2分以下的代理,形成了如图10所示的有效代理集合:
后一列是每一个代理的得分。
最后把这些代理全放入我们的代理库中,为线上运行提供支持。
以抓取http://www.21cbh.com/channel/review/的为例,总个抓取系统的实时抓取模块的线上运行步骤如下:
步骤1,轮询提取一个个job;(此处默认提取到图7所示的job);
步骤2,job解析;解析完了后,产生如下抓取属性:
1)抓取http://www.21cbh.com/channel/review/,不扩展;
2)抓取这个页面的<div class=″home_box″>DOM节点所指定的区域;
3)抓取这个区域的满足如下url正则的url链接:
http://www.21cbh.com/HTML/.*?\.html
4)抓取间隔基数是298603毫秒;
5)抓取时间范围是一天的1点到8点;
步骤3,时间范围判定。查询此job的时间范围参数是1点到8点,如果时间范围不包含当前时间,将不抓取,返回步骤1,否则进入下一步骤;
步骤4,时间间隔判定。查询此job的时间间隔基数是298603毫秒,如果时间间隔指定下一次抓取时间大于当前时间,则将不抓取,返回步骤1,否则进入下一步骤;
步骤5,job调度。根据任务解析模块得到的job其它属性进行job调度。调度时候会判断,如果这个job以往已经存在,则不分发,仍然采用本地服务器来抓取;否则,选择服务器群中现jobs数目较少的一台服务器,以实现抓取任务的均衡,从而优化总体的抓取速度;同时考虑尽量避免一台服务器上同网站job太多,以防止单台服务器对单个网站抓取压力太大;
步骤6,任务下载。先去代理库中取适当数目的代理,一般是5个;如图10所示的有效代理集合,从中随机选择一个代理,进行任务的本轮下载;
步骤7,抓取频率调整。根据此job的抓取间隔基数298603,如果本轮次抓取到更新,则减少下一轮次的抓取时间间隔0.2倍;如果本轮次没有抓取到更新,则增加下一轮次的抓取时间间隔0.2倍。
Claims (4)
1.一种文章实时智能抓取系统,其特征在于,所述系统包括实时抓取模块、网页抽取系统、文档近似排重模块、文档自动分类模块和文章发布模块;所述实时抓取模块包括线上和线下运行子模块;
其中所述线上运行子模块包括:
任务提取模块,从任务job集合中轮流提取一个job;
任务解析模块,对每一个任务job进行解析,解析结果将会形成一些属性和规则;
任务抓取时间范围检验模块,查询任务的时间范围参数,如果时间范围不包含当前时间,将不抓取,跳过本job,否则,进行抓取时间间隔检验;
任务抓取时间间隔检验模块,查询任务的抓取时间间隔,如果时间间隔指定下一次抓取时间大于当前,则将不抓取,跳过本job,否则,进行任务抓取;
任务调度模块,根据任务解析模块的job其它属性进行job调度,调度时候会判断,如果这个job以往已经存在,则不分发,仍然采用本地服务器来抓取;否则,选择服务器群中现jobs数目较少的一台服务器,以实现抓取任务的均衡,从而优化总体的抓取速度;同时考虑尽量避免一台服务器上同网站job太多,以防止单台服务器对单个网站抓取压力太大;
任务下载模块,进行任务的具体下载,去代理库中取适当数目的代理;如果没有代理可取,则采用非代理抓取;同时将无代理和上述所取代理合并,形成代理集合;根据解析得到的任务参数,从代理集合中随机选择一个代理,进行任务的本轮下载;
任务抓取频率调整模块,根据job的抓取间隔基数,如果本轮抓取发现更新,则随机减少下一轮次抓取时间间隔;如果没有发现更新,则随机放大下一轮次的抓取间隔;但是保证时间间隔是job的抓取间隔基数的[0.5,2]倍数范围内;
其中所述线下运行子模块包括:
任务抓取时间范围发现模块,执行历史抓取日志智能分析工作,从中分析出每一个任务job的时间范围;
任务抓取时间间隔发现模块,读入昨天的抓取日志,分析每一个job的一天所有轮次的抓取情况,从中分析出每一个job的更新情况;如果发现job的当前间隔基数保证了50%以上轮次可以抓取到更新,则不调整;否则适当放大当前间隔 基数,以降低无谓抓取请求;
免费代理收集和验证模块,从互联网免费代理分享网站下载当天的免费代理集合,对这些免费代理进行验证;随机选择历史抓取链接形成验证url集合,使用每一个代理来执行若干次的url抓取,剔除掉不能成功抓取或者抓取速度太慢的代理,留下成功率高同时速度快的代理,形成当天的代理库,以为线上抓取提供代理支持。
2.根据权利要求1所述的系统,其中所述适当数目的代理为5个代理。
3.一种文章实时智能抓取方法,其特征在于,所述方法包括实时抓取步骤、网页抽取步骤、文档近似排重步骤、文章自动分类步骤和文章发布步骤;所述实时抓取步骤还包括线上和线下运行子步骤;
所述线上运行子步骤包括:
步骤1.1,从任务job集合中轮流提取一个job;
步骤1.2,job解析,对每一个job进行解析,解析结果将会形成一些属性和规则;
步骤1.3,时间范围判定,查询任务的时间范围参数,如果时间范围不包含当前时间,将不抓取,返回步骤1.1,否则进入下一步骤;
步骤1.4,时间间隔判定,查询任务的抓取时间间隔,如果时间间隔指定下一次抓取时间大于当前,则将不抓取,返回步骤1.1,否则进入下一步骤;
步骤1.5,job调度,根据步骤1.2处理的job的其它属性进行job调度,调度时候会判断,如果这个job以往已经存在,则不分发,仍然采用本地服务器来抓取;否则,选择服务器群中现jobs数目较少的一台服务器,以实现抓取任务的均衡,从而优化总体的抓取速度;同时考虑尽量避免一台服务器上同网站job太多,以防止单台服务器对单个网站抓取压力太大;
步骤1.6,任务下载,去代理库中取适当数目的代理;如果没有代理可取,则采用非代理抓取;同时将无代理和上述所取代理合并,形成代理集合;根据解析得到的任务参数,从代理集合中随机选择一个代理,进行任务的本轮下载;
步骤1.7,抓取频率调整,根据job的抓取间隔基数,如果本轮抓取发现更新,则随机减少下一轮次抓取时间间隔;如果没有发现更新,则随机放大下一轮次的抓取间隔;但是保证时间间隔是job的抓取间隔基数的[0.5,2]倍数范围内;频率调整完成后,返回步骤1.1,重复执行整个流程;
所述线下运行子步骤包括:
步骤2.1,分析日志发现时间范围,执行历史抓取日志智能分析工作,从中分析出每一个任务job的时间范围;
步骤2.2,分析日志发现新时间间隔,读入昨天的抓取日志,分析每一个job的一天所有轮次的抓取情况,从中分析出每一个job的更新情况;如果发现job的当前间隔基数保证了50%以上轮次可以抓取到更新,则不调整;否则适当放大当前间隔基数,以降低无谓抓取请求;
步骤2.3,免费代理搜集和验证,从互联网免费代理分享网站下载当天的免费代理集合,对这些免费代理进行验证;随机选择历史抓取链接形成验证url集合,使用每一个代理来执行若干次的url抓取,剔除掉不能成功抓取或者抓取速度太慢的代理,留下成功率高同时速度快的代理,形成当天的代理库,以为线上抓取提供代理支持。
4.根据权利要求3所述的方法,所述适当数目的代理为5个代理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110455139 CN102402627B (zh) | 2011-12-31 | 2011-12-31 | 一种文章实时智能抓取系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110455139 CN102402627B (zh) | 2011-12-31 | 2011-12-31 | 一种文章实时智能抓取系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102402627A CN102402627A (zh) | 2012-04-04 |
CN102402627B true CN102402627B (zh) | 2013-08-14 |
Family
ID=45884827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110455139 Active CN102402627B (zh) | 2011-12-31 | 2011-12-31 | 一种文章实时智能抓取系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102402627B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609456A (zh) * | 2012-01-12 | 2012-07-25 | 凤凰在线(北京)信息技术有限公司 | 一种文章实时智能抓取系统和方法 |
EP2650802B1 (en) * | 2012-04-12 | 2018-10-24 | Dassault Systèmes | Building of a web corpus with the help of a reference web crawl |
CN103778165A (zh) * | 2012-10-26 | 2014-05-07 | 广州市邦富软件有限公司 | 一种蜘蛛调度中心采集动态调整算法 |
CN105095301A (zh) * | 2014-05-19 | 2015-11-25 | 南京思柏瑞信息科技有限公司 | 一种信息发布的方法及系统 |
CN104008190B (zh) * | 2014-06-12 | 2017-04-19 | 江苏敏行信息技术有限公司 | 一种爬虫系统及其方法 |
CN107066461A (zh) * | 2016-10-21 | 2017-08-18 | 天津海量信息技术股份有限公司 | 一种组合新闻分析基于多篇资讯的内容检索方法 |
CN108270812B (zh) * | 2016-12-30 | 2021-03-23 | 深圳市青果乐园网络科技有限公司 | 用于获取文章发布和分享情况的方法和系统 |
CN111008319A (zh) * | 2019-10-29 | 2020-04-14 | 上海医望网络科技有限公司 | 一种基于人工智能的内容管理系统 |
CN113360736B (zh) * | 2021-06-21 | 2023-08-01 | 北京百度网讯科技有限公司 | 互联网数据的抓取方法和装置 |
CN116611417B (zh) * | 2023-05-26 | 2023-11-21 | 浙江兴旺宝明通网络有限公司 | 一种文章自动生成方法、系统、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073683A (zh) * | 2010-12-22 | 2011-05-25 | 四川大学 | 一种分布式的实时新闻信息采集系统 |
CN102096705A (zh) * | 2010-12-31 | 2011-06-15 | 南威软件股份有限公司 | 一种文章采集的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7680854B2 (en) * | 2005-03-11 | 2010-03-16 | Yahoo! Inc. | System and method for improved job seeking |
-
2011
- 2011-12-31 CN CN 201110455139 patent/CN102402627B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073683A (zh) * | 2010-12-22 | 2011-05-25 | 四川大学 | 一种分布式的实时新闻信息采集系统 |
CN102096705A (zh) * | 2010-12-31 | 2011-06-15 | 南威软件股份有限公司 | 一种文章采集的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102402627A (zh) | 2012-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402627B (zh) | 一种文章实时智能抓取系统和方法 | |
CN106168965B (zh) | 知识图谱构建系统 | |
CN102609456A (zh) | 一种文章实时智能抓取系统和方法 | |
Verma et al. | Breaking the MapReduce stage barrier | |
CN103546326B (zh) | 一种网站流量统计的方法 | |
CN102819591B (zh) | 一种基于内容的网页分类方法及系统 | |
CN103246732B (zh) | 一种在线Web新闻内容的抽取方法及系统 | |
CN105912594B (zh) | Sql语句处理方法和系统 | |
CN107301205A (zh) | 一种大数据分布式实时查询方法及系统 | |
CN102073725A (zh) | 结构化数据的搜索方法和实现该搜索方法的搜索引擎系统 | |
CN108416034B (zh) | 基于金融异构大数据的信息采集系统及其控制方法 | |
CN104182412A (zh) | 一种网页爬取方法及系统 | |
Shrivastava | A methodical study of web crawler | |
CN105677687A (zh) | 一种数据处理方法及装置 | |
CN109408763A (zh) | 一种对不同模板的简历进行管理的方法及系统 | |
CN103258017A (zh) | 一种并行的垂直交叉网络数据采集方法及系统 | |
CN113282599A (zh) | 数据同步方法及系统 | |
CN109766488B (zh) | 一种基于Scrapy的数据采集方法 | |
CN106021580A (zh) | Impala 基于Hadoop集群日志分析方法和系统 | |
CN112541119A (zh) | 一种高效节源的小型推荐系统 | |
Yadav et al. | Parallel crawler architecture and web page change detection | |
Liu et al. | PAIRPQ: an efficient path index for regular path queries on knowledge graphs | |
Jalali et al. | OPWUMP: an architecture for online predicting in WUM-based personalization system | |
Singh et al. | Faster and efficient web crawling with parallel migrating web crawler | |
CN103631779A (zh) | 一种基于社交化词典的单词推荐系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |