发明内容
本发明的目的是提供一种抓取网络平面媒体的网页内容的方法及系统,可以抓取到更加全面的数据,并且提高抓取效率。
为实现上述目的,本发明提供了如下方案:
一种抓取网络平面媒体的网页内容的方法,包括:
获取网络平面媒体的可用URL信息;所述URL信息包含时间信息;
根据所述可用URL信息生成所述网络平面媒体的URL模板;
确定需要抓取的所述网络平面媒体的更新时间信息;
根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;
抓取所述第一URL对应的网页内容。
可选的,还包括:
判断所述第一URL对应的网页内容是否抓取成功,得到第一判断结果;
当所述第一判断结果为是时,对所述第一URL对应的网页内容进行深度抓取;
当所述第一判断结果为否时,停止抓取。
可选的,所述确定需要抓取的所述网络平面媒体的更新时间信息,包括:
查询抓取记录;所述抓取记录中记录有每次成功抓取对应的时间信息;
获取当前的时间信息以及所述网络平面媒体的更新周期;
确定所述当前的时间信息之前,所述网络平面媒体中尚未抓取的网页内容对应的时间信息。
可选的,还包括:
判断需要抓取的所述网络平面媒体的更新时间信息中,是否存在超过预设时间仍未抓取成功的超时网页内容;
停止抓取所述超时网页内容。
可选的,所述方法还包括:
获取抓取失败的次数;
判断抓取失败的次数是否大于预设次数,得到第二判断结果;
当所述第二判断结果为是时,重新获取所述网络平面媒体的第二可用URL信息;
根据所述第二可用URL信息重新生成所述网络平面媒体的URL模板。
一种抓取网络平面媒体的网页内容的系统,包括:
可用URL信息获取单元,用于获取网络平面媒体的可用URL信息;所述URL信息包含时间信息;
URL模板生成单元,用于根据所述可用URL信息生成所述网络平面媒体的URL模板;
更新时间信息确定单元,用于确定需要抓取的所述网络平面媒体的更新时间信息;
第一URL构造单元,用于根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;
网页内容抓取单元,用于抓取所述第一URL对应的网页内容。
可选的,还包括:
第一判断单元,用于判断所述第一URL对应的网页内容是否抓取成功,得到第一判断结果;
深度抓取单元,用于当所述第一判断结果为是时,对所述第一URL对应的网页内容进行深度抓取;
第一停止单元,用于当所述第一判断结果为否时,停止抓取。
可选的,所述更新时间信息确定单元,包括:
抓取记录查询子单元,用于查询抓取记录;所述抓取记录中记录有每次成功抓取对应的时间信息;
时间即周期获取子单元,用于获取当前的时间信息以及所述网络平面媒体的更新周期;
更新时间信息确定子单元,用于确定所述当前的时间信息之前,所述网络平面媒体中尚未抓取的网页内容对应的更新时间信息。
可选的,还包括:
第二判断单元,用于判断需要抓取的所述网络平面媒体的更新时间信息中,是否存在超过预设时间仍未抓取成功的超时网页内容;
第二停止单元,用于停止抓取所述超时网页内容。
可选的,所述系统还包括:
失败次数获取单元,用于获取抓取失败的次数;
第三判断单元,用于判断抓取失败的次数是否大于预设次数,得到第二判断结果;
第二可用URL信息获取单元,用于当所述第二判断结果为是时,重新获取所述网络平面媒体的第二可用URL信息;
URL模板重生成单元,用于根据所述第二可用URL信息重新生成所述网络平面媒体的URL模板。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明实施例的抓取网络平面媒体的网页内容的方法及系统,通过根据所述可用URL信息生成所述网络平面媒体的URL模板,再根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;抓取所述第一URL对应的网页内容,与现有技术相比,不再采用抓取页面跳转的方式,而是直接通过构造的URL进行抓取,当网站的页面跳转链接不可用时,采用本发明实施例的方案仍然能够抓取到网络平面媒体的页面内容,因此,本发明实施例的方法及系统可以抓取到更加全面的数据。并且,由于本发明实施例的方法及系统不再抓取页面跳转,因此也不会产生抓取页面跳转的开销,不会造成无用的抓取,节约硬件资源,从而可以提高抓取效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明的抓取网络平面媒体的网页内容的方法实施例1的流程图。如图1所示,所述方法可以包括:
步骤101:获取网络平面媒体的可用URL信息;所述URL信息包含时间信息;
所述可用URL信息可以是网络平面媒体的首页的URL,也可以是网络平面媒体的首页上的某个链接的URL。该URL对应的是网络平面媒体的每一期所更新的内容。
例如北京日报7月1日的首页URL为:
http://bjrb.bjd.com.cn/html/2013-07/01/node_2.htm,就是步骤101中的可用的包含时间信息的URL信息。
步骤102:根据所述可用URL信息生成所述网络平面媒体的URL模板;
可以将所述可用URL信息中的时间信息用自定义的通配符替换,从而生成URL模板。以上述北京日报的URL为例,可以将时间信息中的年份信息用“YYYY”替换,将月份信息用“MM”替换,将日期信息用“DD”替换,得到如下形式的URL模板:
http://bjrb.bjd.com.cn/html/{YYYY}-{MM}/{DD}/node_2.htm
步骤103:确定需要抓取的所述网络平面媒体的更新时间信息;
如果该网络平面媒体的更新周期为一天,那么理论上就可以将当日之前的没有抓取到的平面媒体版本对应的更新日期作为所述更新时间信息。
具体的,可以查询抓取记录;所述抓取记录中记录有每次成功抓取对应的时间信息;
获取当前的时间信息以及所述网络平面媒体的更新周期;
确定所述当前的时间信息之前,所述网络平面媒体中尚未抓取的网页内容对应的时间信息。
假设当前的日期为7月9日。网络平面媒体的更新周期为一天。7月6日和7月8日的网页内容已经成功抓取。7月7日的网页内容尚未抓取,则可以将所述网络平面媒体中尚未抓取的网页内容对应的时间信息确定为7月7日。
步骤104:根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;
可以根据之前确定的所述网络平面媒体中尚未抓取的网页内容对应的时间信息,对URL模板中的通配符进行替换。例如,当尚未抓取的网页内容对应的时间信息为2013年7月7日时,可以构造出如下的第一URL:
http://bjrb.bjd.com.cn/html/2013-07/07/node_2.htm。
步骤105:抓取所述第一URL对应的网页内容。
可以看出,本实施例中,通过根据所述可用URL信息生成所述网络平面媒体的URL模板,再根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;抓取所述第一URL对应的网页内容,与现有技术相比,不再采用抓取页面跳转的方式,而是直接通过构造的URL进行抓取,当网站的页面跳转链接不可用时,采用本实施例的方案仍然能够抓取到网络平面媒体的页面内容,因此,本实施例的方法可以抓取到更加全面的数据。并且,由于本实施例的方法不再抓取页面跳转,因此也不会产生抓取页面跳转的开销,不会造成无用的抓取,节约硬件资源,从而可以提高抓取效率。
需要说明的是,实际应用中,为了实现对网页内容进行深度抓取,本实施例的方法还可以包括下述步骤:
判断所述第一URL对应的网页内容是否抓取成功,得到第一判断结果;
当所述第一判断结果为是时,对所述第一URL对应的网页内容进行深度抓取;
当所述第一判断结果为否时,停止抓取。
此外,根据第一判断结果,还可以判断该时间信息对应的网页内容是否被成功抓取到,并进行记录。后续可以根据记录内容,对没有成功抓取到的网页内容进行再次抓取。
具体的,可以参见本发明的抓取网络平面媒体的网页内容的方法的实施例2。
图2为本发明的抓取网络平面媒体的网页内容的方法实施例2的流程图。如图2所示,该方法可以包括步骤:
步骤201:获取网络平面媒体的可用URL信息;所述URL信息包含时间信息;
步骤202:根据所述可用URL信息生成所述网络平面媒体的URL模板;
步骤203:查询抓取记录;所述抓取记录中记录有每次成功抓取对应的时间信息;
可以采用配置文件存储抓取记录。假设7月10日的网页内容被成功抓取,则抓取记录中就可以记录下该网站7月10日的网页内容已被成功抓取。
步骤204:获取当前的时间信息以及所述网络平面媒体的更新周期;
所述更新周期可以是以天、周、月或年等为单位。获取的当前的时间信息可以与所述更新周期相匹配。当所述更新周期为天时,获取的当前的时间信息可以精确到天。当所述更新周期为月时,获取的当前的时间信息可以精确到月。依此类推。
步骤205:确定所述当前的时间信息之前,所述网络平面媒体中尚未抓取的网页内容对应的时间信息,得到更新时间信息。
假设当前的时间信息为7月12日,则在7月12日之前,在预设起始日期(例如7月1日)之后,已经成功抓取的网页内容对应的时间信息为7月1日至7月10日,那么就可以确定所述网络平面媒体中尚未抓取的网页内容对应的时间信息为7月11日。
步骤206:根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;
步骤207:抓取所述第一URL对应的网页内容。
实际应用中,对于某个网页,若太长时间没有抓到某个更新时间对应的数据,由于数据的时效性原因和资源开销上的限制,可以对一直抓取失败的某个更新时间对应的平媒首页不再进行抓取。相应的,本发明实施例中的方法可以包括步骤:
判断需要抓取的所述网络平面媒体的更新时间信息中,是否存在超过预设时间仍未抓取成功的超时网页内容;
停止抓取所述超时网页内容。
例如,对于某一网页内容,连续7天都没有抓取到,则可以不再抓取该网页的内容。
实际应用中,连续几次抓取不到某个更新时间对应的网页内容,还有一种可能是该网页的URL的构造方式发生了改变。这种改变主要是网站的管理方发起的。
为了避免由于URL构造方式发生改变而导致采用前述实施例的方法无法抓取到对应的网页内容,本发明还提供了下面的实施例。
图3为本发明的抓取网络平面媒体的网页内容的方法实施例3的流程图。如图3所示,所述方法可以包括:
步骤301:获取网络平面媒体的可用URL信息;所述URL信息包含时间信息;
步骤302:根据所述可用URL信息生成所述网络平面媒体的URL模板;
步骤303:确定需要抓取的所述网络平面媒体的更新时间信息;
步骤304:根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;
步骤305:抓取所述第一URL对应的网页内容。
步骤306:获取抓取失败的次数;
步骤307:判断抓取失败的次数是否大于预设次数,得到第二判断结果;
步骤308:当所述第二判断结果为是时,重新获取所述网络平面媒体的第二可用URL信息;
本步骤中,可以通过网络平面媒体网页上的“上一期”、“下一期”等链接来获取所述网络平面媒体的可用URL信息,作为第二可用URL信息。
步骤309:根据所述第二可用URL信息重新生成所述网络平面媒体的URL模板,作为第二URL模板。
步骤310:采用所述第二URL模板抓取对应的网页内容。
具体的,步骤310中,采用所述第二URL模板抓取对应的网页内容的具体过程,与采用第一URL模板抓取对应的网页内容的具体过程相似,不再赘述。
本发明还公开了一种抓取网络平面媒体的网页内容的系统。图4为本发明的抓取网络平面媒体的网页内容的系统实施例的结构图。如图4所示,该系统可以包括:
可用URL信息获取单元,用于获取网络平面媒体的可用URL信息;所述URL信息包含时间信息;
URL模板生成单元,用于根据所述可用URL信息生成所述网络平面媒体的URL模板;
更新时间信息确定单元,用于确定需要抓取的所述网络平面媒体的更新时间信息;
第一URL构造单元,用于根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;
网页内容抓取单元,用于抓取所述第一URL对应的网页内容。
本实施例中,通过根据所述可用URL信息生成所述网络平面媒体的URL模板,再根据所述URL模板以及所述更新时间信息构造所述网络平面媒体的第一URL;抓取所述第一URL对应的网页内容,与现有技术相比,不再采用抓取页面跳转的方式,而是直接通过构造的URL进行抓取,当网站的页面跳转链接不可用时,采用本实施例的方案仍然能够抓取到网络平面媒体的页面内容,因此,本实施例的系统可以抓取到更加全面的数据。并且,由于本实施例的系统不再抓取页面跳转,因此也不会产生抓取页面跳转的开销,不会造成无用的抓取,节约硬件资源,从而可以提高抓取效率。
实际应用中,本发明的抓取网络平面媒体的网页内容的系统,还可以包括:
第一判断单元,用于判断所述第一URL对应的网页内容是否抓取成功,得到第一判断结果;
深度抓取单元,用于当所述第一判断结果为是时,对所述第一URL对应的网页内容进行深度抓取;
第一停止单元,用于当所述第一判断结果为否时,停止抓取。
所述更新时间信息确定单元403,可以包括:
抓取记录查询子单元,用于查询抓取记录;所述抓取记录中记录有每次成功抓取对应的时间信息;
时间即周期获取子单元,用于获取当前的时间信息以及所述网络平面媒体的更新周期;
更新时间信息确定子单元,用于确定所述当前的时间信息之前,所述网络平面媒体中尚未抓取的网页内容对应的更新时间信息。
所述系统还可以包括:
第二判断单元,用于判断需要抓取的所述网络平面媒体的更新时间信息中,是否存在超过预设时间仍未抓取成功的超时网页内容;
第二停止单元,用于停止抓取所述超时网页内容。
所述系统还可以包括:
失败次数获取单元,用于获取抓取失败的次数;
第三判断单元,用于判断抓取失败的次数是否大于预设次数,得到第二判断结果;
第二可用URL信息获取单元,用于当所述第二判断结果为是时,重新获取所述网络平面媒体的第二可用URL信息;
URL模板重生成单元,用于根据所述第二可用URL信息重新生成所述网络平面媒体的URL模板。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。