发明内容
本发明提供一种网络数据采集方法和系统,能够实时采集最新的网络数据。
本发明方法一方面提供了一种网络数据采集的方法,用于采集发布于一网站上的与M个主题分别相关的网络文档的数据,其中M为大于等于1的整数,所述方法包括:根据待采集链接地址所对应的类型,将所述待采集链接地址配置到对应类型的队列中,所述待采集链接地址为与所述M个主题分别相关的网络文档的数据所在页面的链接地址;获取所述对应类型的队列中的所述待采集链接地址对应的网页源代码;根据所述网页源代码对应的URL信息及所述URL的采集深度值抽取所述URL对应的网络文档的数据。
优选地,根据所述网站发布与所述M个主题分别相关的网络文档的更新频率设置刷新时间间隔;以及基于所述刷新时间间隔刷新所述待采集链接地址。
优选地,所述M个主题中每个主题为一部网络文学,所述方法还包括:根据所述网络文学的结构配置所述URL的采集深度值,具体为:
优选地,所述待采集链接地址对应的类型包括主题名称页、列表页和内容页,配置所述主题名称页用于提取主题名称;配置所述列表页用于提取主题章节目录或主题章节;配置所述内容页用于提取主题正文内容。
优选地,所述将所述待采集链接地址配置到对应类型的队列中,具体包括:将类型为所述主题名称页的链接地址加入到主题名称页队列中;将类型为所述列表页的链接地址加入到列表页队列中;将类型为所述内容页的链接地址加入到内容页队列中。
优选地,所述获取所述对应类型的队列中的所述待采集链接地址对应的网页源代码具体为:在所述主题名称页队列中获取所述主题名称页的链接地址对应的网页源代码。
优选地,所述根据所述网页源代码对应的URL信息及所述URL的采集深度值抽取所述URL对应的网络文档的数据,具体为:若采集深度值为第一阈值,则抽取主题的名称及所述名称对应的URL,并将所述名称对应的URL的采集深度值标记为第二阈值后加入到所述列表页队列中;若采集深度值为第二阈值,则抽取主题的名称及所述名称对应的URL,并将所述名称对应的URL的采集深度值标记为第三阈值后加入到所述列表页队列中。
优选地,所述获取所述对应类型的队列中的所述待采集链接地址对应的网页源代码具体为:在所述列表页队列中获取所述列表页的链接地址对应的网页源代码。
优选地,所述根据所述网页源代码对应的URL信息及所述URL的采集深度值抽取所述URL对应的网络文档的数据具体为:若采集深度值为第二阈值,则抽取主题的章节目录及所述章节目录对应的URL,并将所述章节目录对应的URL的采集深度值标记为第三阈值后加入到所述列表页队列中;若采集深度值为第三阈值,则判断所述网页源代码对应的URL是否存在上级URL:若是,则抽取主题的章节标题及所述章节标题对应章节的URL,并将所述章节的URL加入到所述内容页队列中;若否,则抽取主题的名称、主题的章节标题及所述章节标题对应章节的URL,并将所述章节的URL加入到所述内容页队列中。
优选地,所述获取所述对应类型的队列中的所述待采集链接地址对应的网页源代码具体为:在所述内容页队列中获取所述内容页的链接地址对应的网页源代码。
优选地,所述根据所述网页源代码对应的URL信息及所述URL的采集深度值抽取所述URL对应的网络文档的数据具体为:从所述网页源代码中抽取主题的章节标题、章节正文内容,并从所述网页源代码对应的URL中抽取所述章节标题对应章节的章节ID。
优选地,判断所述章节正文内容是否存在分页:若是,则提取下一页的链接地址,并同时标记当前页的页码以及下一页的页码并将下一页的链接地址加入到所述内容页队列中等待采集。
优选地,以所述章节正文内容的第一页链接为唯一键值,存放所述分页的内容,当采集到最后一页时给予结束标识。
优选地,将抽取出的所有分页的正文内容合并到一起,结合所述章节标题进行输出。
本发明另一方面提供一种网络数据采集的系统,用于采集发布于一网站上的与M个主题分别相关的网络文档的数据,其中M为大于等于1的整数,所述系统包括配置模块,用于根据待采集链接地址所对应的类型,将待采集链接地址配置到对应类型的队列中,所述待采集链接地址为与所述M个主题分别相关的网络文档的数据所在页面的链接地址;网页获取模块,用于获取所述对应类型的队列中的所述待采集链接地址对应的网页源代码;数据抽取模块,用于根据所述网页源代码对应的URL信息及所述URL的采集深度值抽取所述URL对应的网络文档的数据。
优选地,所述系统还包括刷新模块,用于根据所述网站发布与所述M个主题分别相关的网络文档的更新频率,设置刷新时间间隔并基于所述刷新时间间隔刷新所述待采集链接地址。
优选地,所述待采集链接地址对应的类型包括主题名称页、列表页和内容页,所述配置模块包括页面配置模块,用于配置所述主题名称页用于提取主题名称、配置所述列表页用于提取主题章节目录或主题章节及配置所述内容页用于提取主题内容。
优选地,所述配置模块还包括队列配置模块,用于将所述待采集链接地址配置到对应类型的队列中,所述队列分配模块包括:第一分配单元,用于将类型为所述主题名称页的链接地址分配到主题名称页队列中;第二分配单元,用于将类型为所述列表页的链接地址分配到列表页队列中;第三分配单元,用于将类型为所述内容页的链接地址分配到内容页队列中。
本发明有益效果如下:
本发明一实施例采用一网络数据采集系统采集网络数据,系统获取网络数据的链接地址然后配置链接地址的类型,并根据链接地址的类型将链接地址放入对应的队列中。从队列中获取链接地址对应的源代码,根据源代码中对应的URL信息及URL的采集深度值提取网络数据的信息,从而达到实时采集网络数据的技术效果。
进一步,还采用了内容合并模块,可以对属于同一主题的网络文档进行合并,所以可以在实时采集网络数据的基础上达到便捷集中浏览的效果。
具体实施方式
为让本领域所属技术人员更清楚,更完整理解本发明,下面结合附图作详细介绍:
本发明一实施例提供了一种网络数据采集的方法,用于采集发布于一网站上的与M个主题分别相关的网络文档的数据,其中M为大于等于1的整数,请参考图1,图1为本实施例中的采集方法的流程图。如图1所示,采集数据的方法包括:
步骤11:根据待采集链接地址所对应的类型,将待采集链接地址配置到对应类型的队列中,所述待采集链接地址为与所述M个主题分别相关的网络文档的数据所在页面的链接地址;
步骤12:获取所述对应类型的队列中的所述待采集链接地址对应的网页源代码;
步骤13:根据所述网页源代码对应的URL信息及所述URL的采集深度值抽取所述URL对应的网络文档的数据。
在步骤11中,网站上所发布的M个主题可以为M部网络文学作品,为方便理解本发明,以下实施例以网络文学为例,但并不限于网络文学。网络文学具有不同于例如网络新闻等主题的发布结构。一般的网络新闻都是单篇的,而网络文学作品发表在网站上一般有2种形式呈现。一种是类似于小说阅读网站的“文学名称->章节目录页->具体的某一章节的网络文学内容页”,有的网络文学还会在“章节目录页”前存在“卷”的概念;另外一种则是类似普通新闻网站的内容目录页面,不同文学作品的章节会穿插在一起呈现,但会在标题中以类似“文学作品名称(5)”的形式来标明是同一个作品中的不同章节。
对不同结构的网络文学作品的网络文档的数据进行采集,应先获取网络文档的数据所在页面的链接地址。在本实施例中,根据网络文学作品在网站上发布的结构,网络文档的数据一般包括网络文档所属的网络文学作品的名称、网络文档所属的网络文学作品中卷及/或章节的名称、网络文档的正文内容。相应地,网络文档的数据所在的页面的链接地址对应的类型包括:主题名称页,用于提取网络文档所属的网络文学作品的名称;列表页,用于提取网络文学作品的章节目录链接和章节链接,其中,章节目录包括网络文学的卷目录和章目录;内容页,用于提取主题正文内容。
在本实施例中,将M个网络文学的数据所在的页面的链接地址根据其类型分别放入不同队列中。具体地,将类型为主题名称页的链接地址分配到主题名称页队列中;将类型为列表页的链接地址分配到列表页队列中;将类型为内容页的链接地址分配到内容页队列中。例如A网站上发布有三部网络文学作品,分别为A1、A2、A3。其中,A1在网站A上的发表结构为:文学名称->卷目录->章目录->具体的某一章节的网络文学内容页;A2在网站A上的发表结构为:文学名称->章目录->具体的某一章节的网络文学内容页;A3在网站A上的发表结构为:章名称->具体的某一章节的网络文学内容页,A3的章名称即为A3的作品名称与章数的结合,例如A3的第一章的章名称是:A3(一);A3的第五章的章名称是A3(五)。在针对网站A进行的一次采集过程起始时,将具有A1作品的名称的页面的链接地址B1放入主题名称页队列中;将具有A2作品的名称的页面的链接地址B2放入主题名称页队列中;将具有A3作品的章节链接的地址B3放入列表页队列中等待被采集。而内容页队列在采集起始时,并不会有待采集的链接地址放入。
在实际的采集过程中,由于网络文档会定时更新但更新频率不会像网络新闻和论坛信息那样快速,故可以采用定时刷新的策略,当然也可以采用自适应刷新的策略,即根据网站自身发布不同网络文学作品的频率自动调整刷新间隔。当检测到有网络文学作品到了其刷新间隔时间,则将刷新的待采集链接地址放入到其对应类型的队列中。
在步骤12中,获取各个队列中的待采集链接地址对应的网页源代码具体为根据系统设定的URL获取策略,例如根据系统运行情况或者各队列的情况,本领域技术人员在实际操作时可根据时间需要设定URL的获取策略,从各个队列中获取一个待采集的链接地址,然后系统通过Http请求的方式获取网页源代码。在本实施例中,例如针对网站A上的三部网络文学作品的采集起始时,从主题名称页队列中提取的待采集链接地址B1、B2,根据系统设定的URL获取策略分别获取B1对应的网页源代码和B2对应的网页源代码;从列表页队列中提取待采集链接地址B3并根据系统设定的URL获取策略获取其网页源代码。
在步骤13中,网页源代码对应的URL信息包括网络文学作品名称、章节目录及章节链接、正文内容的链接。URL的采集深度值根据网络文学作品的结构配置,具体为:
在本实施例中,第一阈值为3,第二阈值为2,第三阈值为1,当然本领域技术人员也可以采用其他数值或标记来标示不同的阈值,为方便说明本发明,以下以第一阈值为3、第二阈值为2、第三阈值为1进行举例说明,按照网络文学作品的结构配置的采集深度值可以结合网站A上发布的A1、A2、A3进行理解。当从主题名称页队列中获取链接地址B1后,根据B1对应的源代码获取对应的URL(即URL-A1),而A1的结构为“文学名称->卷目录->章目录->具体的某一章节的网络文学内容页”,则URL-A1的采集深度值应为3。同理,A2的结构为“文学名称->章目录->具体的某一章节的网络文学内容页”,则根据B2得到的源代码所对应的URL(即URL-A2)的采集深度值为2;A3的结构为“章名称->具体的某一章节的网络文学内容页”,则根据B3得到的源代码所对应的URL(即URL-A3)的采集深度值为3。
步骤13具体包括:(请参考图2)
步骤131:根据从主题名称页队列中获取的主题名称页的链接地址对应的网页源代码所对应的URL信息及URL采集深度值,抽取URL对应的网络文档的数据。
步骤132:根据从列表页队列中获取的列表页的链接地址对应的网页源代码所对应的URL信息及URL采集深度值,抽取URL对应的网络文档的数据。
步骤133:根据从内容页队列中获取的内容页的链接地址对应的网页源代码所对应的URL,从网页源代码中抽取主题的章节标题、章节正文内容,并从网页源代码对应的URL中抽取所述章节标题对应章节的章节ID。
上述步骤131、132、133在实现时没有先后顺序的限制,只要当各个队列中有需要待采集的链接地址时,就可以对待采集的链接地址进行采集,获取待采集链接地址对应的网页源代码并根据网页源代码对应的URL信息及URL采集深度值抽取URL对应的网络文档的数据,下面将详细说明各步骤中对网络文档数据进行抽取的过程。
在步骤131中,抽取URL对应的网络文档的数据具体为:
若URL的采集深度值为3,则抽取主题的名称及该名称对应的URL,并将该名称对应的URL的采集深度值标记为第二阈值后加入到列表页队列中;
若URL的采集深度值为2,则抽取主题的名称及该名称对应的URL,并将该名称对应的URL的采集深度标记为1后加入到列表页队列中。
在本实施例中,从主题名称页队列中提取的链接地址为A1的链接地址B1及A2的链接地址B2。因B1对应源代码所对应的URL-A1的采集深度值为3,则应抽取A1的主题名称,用“名称A1”表示。还应抽取“名称A1”对应的URL,用“URL-A11”表示,并将“URL-A11”的采集深度值标记为2后加入到列表页队列中,以便抽取URL-A11中属于作品A1的其他信息。而对于链接地址B2,因URL-A2的采集深度值为2,故应抽取A2的主题名称,用“名称A2”表示。还应抽取“名称A2”对应的URL,用“URL-A21”表示,并将“URL-A21”的采集深度值标记为1后加入到列表页队列中,以便抽取URL-A21中属于作品A2的其他信息。
在步骤132中,抽取URL对应的网络文档数据具体为:
若URL的采集深度值为2,则抽取主题的章节目录及章节目录对应的URL,并将章节目录对应的URL的采集深度值标记为1后加入到列表页队列中;
若URL的采集深度值为1,则判断网页源代码对应的URL是否存在上级URL:
若是,则抽取主题的章节标题及章节标题对应章节的URL,并将章节的URL加入到内容页队列中;
若否,则抽取主题的名称、主题的章节标题及章节标题对应章节的URL,并将章节的URL加入到内容页队列中。
在本实施例中,列表页队列中在经过步骤131后已存放了待采集的URL-A11和URL-A21。另外,在针对网站A1的网络文学作品采集的起始时,已经将作品A3对应的链接地址B3放入列表页队列中。
对于URL-A11,其采集深度值为2,则抽取A1的章节目录及章节目录对应的URL,用“URL-A12”表示。将URL-A12的采集深度值标记为1后加入到列表页队列中。
对于URL-A21,其采集深度值为1且其存有上级URL(及URL-A21),故抽取A2的章节标题及章节标题对应章节的URL,用“URL-A22”表示,并将URL-A22加入到内容页队列中。
对于列表页队列中的B3,因为B3对应源代码所对应的URL-A3的采集深度值为1且不具有上级URL,故抽取A3的名称,用“名称A3”表示、章节标题,还应抽取章节标题对应章节的URL,用“URL-A31”表示并将URL-A31加入到内容页队列中。
在步骤133中,若章节正文存在分页,则需要提取下一页的链接地址,并同时标记当前页的页码以及下一页的页码并将下一页的链接地址加入到内容页队列中等待采集。
进而,以章节正文内容的第一页链接为唯一键值,存放分页的内容,当采集到最后一页时给予结束标识。
进一步地,还可以将抽取出的所有分页的正文内容合并到一起,结合章节标题进行输出。
再进一步地,将网站、主题的名称、主题的章节标题、章节ID、章节正文内容上载到数据库中。其中,也可以将章节正文内容以附件的形式存储到文件服务器并将存放文件的路径记录到数据库中。
在本实施例中,对网络数据的采集和合并的方法可以使得网络文学以一本书的形式展现,进一步地,采用自动刷新采集数据可以实现数据的实时采集,所以本实施例可以获得实时、便捷、集中浏览网络文学作品的有益效果。
本发明第一实施例提供了一种网络数据采集的系统,用于采集发布于一网站上的与M个主题分别相关的网络文档的数据,其中M为大于等于1的整数,请参考图3,图3为本实施例中的采集系统的架构图。如图3所示,采集数据的系统包括配置模块31、网页获取模块32、数据抽取模块33。配置模块31用于根据待采集链接地址所对应的类型,将待采集链接地址配置到对应类型的队列中,待采集链接地址为与M个主题分别相关的网络文档的数据所在页面的链接地址。
网页获取模块32用于获取对应类型的队列中的待采集链接地址对应的网页源代码。数据抽取模块33用于根据网页源代码对应的URL信息及URL的采集深度值抽取URL对应的网络文档的数据。
本实施例中,待采集链接地址对应的类型包括主题名称页、列表页和内容页。请参考图4,配置模块31包括页面配置模块311,用于配置主题名称页用于提取主题名称、配置列表页用于提取主题章节目录或主题章节及配置内容页用于提取主题内容。
请继续参考图4,配置模块31还包括队列配置模块312,用于将所述待采集链接地址配置到对应类型的队列中。队列分配模块312还包括包括:第一分配单元3121,用于将类型为主题名称页的链接地址分配到主题名称页队列中;第二分配单元3122,用于将类型为列表页的链接地址分配到列表页队列中;第三分配单元3123,用于将类型为内容页的链接地址分配到内容页队列中。
本实施例中,网页获取模块32包括:第一获取单元321,用于在主题名称页队列中获取主题名称页的链接地址对应的网页源代码。第二获取单元322,用于在列表页队列中获取列表页的链接地址对应的网页源代码。第三获取单元323,用于在内容页队列中获取内容页的链接地址对应的网页源代码。请参考图5。
本实施例中,数据抽取模块33还包括:第一抽取单元331,用于当网页源代码对应URL的采集深度值为第一阈值时,抽取主题的名称及名称对应的URL,并将名称对应URL的采集深度值标记为第二阈值后发送到第二分配单元3122中。第二抽取单元332,用于当网页源代码对应URL的采集深度值为第二阈值,抽取主题的名称及名称对应的URL,并将名称对应URL的采集深度值标记为第三阈值后发送到第二分配单元3122中。第三抽取单元333,用于当网页源代码对应URL的采集深度值为第二阈值,则抽取主题的章节目录及章节目录的URL,并将章节目录的URL的采集深度值标记为第三阈值后发送到第二分配单元3122中。第四抽取单元334,用于判断网页源代码对应的URL是否存在上级URL,并当判断结果为是时,抽取主题的章节标题及章节标题对应章节的URL,并将章节的URL发送到第三分配单元3123中,当判断结果为否时,抽取主题的名称、章节标题及章节标题对应章节的URL,并将章节的URL发送到第三分配单元3123中。第五抽取单元335,用于从网页源代码中抽取主题的章节标题、章节正文内容,并从网页源代码对应的URL中抽取章节标题对应章节的章节ID。分页判断单元336,用于判断章节正文内容是否存在分页;当章节正文内容存在分页时,第五抽取单元335还用于提取下一页的链接地址并同时标记当前页的页码以及下一页的页码并将下一页的链接地址发送到第三分配单元3123中。分页存放单元337,用于以章节正文内容的第一页链接为唯一键值,存放分页的内容,并当采集到最后一页时给予结束标识。请参考图6。
在第二实施例中,与第一实施例不同的是系统还包括刷新模块34,用于根据所述网站发布与所述M个主题分别相关的网络文档的更新频率,设置刷新时间间隔并基于所述刷新时间间隔刷新所述待采集链接地址。本实施例请参考图7。
在第三实施例中,与第一、第二实施例不同的是系统还包括内容合并模块35,用于将抽取出的所有分页的正文内容合并到一起,并结合章节标题进行输出。本实施例请参考图8。
在实施例中也可以结合第二实施例中的刷新模块进行采集工作,为了说明书的简洁,本处不再对结合使用的系统进行详细的介绍。
在第四实施例中,与第一、第二、第三实施例都不同的是系统还包括第一数据存储模块36,用于将网站、主题的名称、主题的章节标题、章节ID、章节正文内容上载到数据库中。第二数据存储模块37,用于当章节正文内容可能占用较多数据库空间时,选择该数据库将网站、主题的名称、主题的章节标题、章节ID、章节正文内容的存放路径上载到数据库中,其中,章节正文内容存放路径是指将章节正文内容以附件的形式存储到文件服务器的路径。本实施例请参考图9。
在本实施例中也可以结合第二实施例中的刷新模块进行采集工作,为了说明书的简洁,本处不再对结合使用的系统进行详细的介绍。
上述第一、第二、第三及第四实施例中的系统可以根据本发明提供的一种网络数据采集方法的实施例中对方法及其各种变化形式的描述进行实施。本处为了说明书的简洁,所以不再详述。
本发明一实施例采用一网络数据采集系统采集网络数据,系统获取网络数据的链接地址然后配置链接地址的类型,并根据链接地址的类型将链接地址放入对应的队列中。从队列中获取链接地址对应的源代码,根据源代码中对应的URL信息及URL的采集深度值提取网络数据的信息,从而达到实时采集网络数据的技术效果。进一步,还采用了内容合并模块,可以对属于同一主题的网络文档进行合并,所以可以在实时采集网络数据的基础上达到便捷集中浏览的效果。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。