网页数据抓取过滤方法

文档序号:6443794阅读:596来源:国知局

专利名称::网页数据抓取过滤方法
技术领域
:本发明属于计算机数据库
技术领域
,尤其涉及一种网页数据抓取过滤方法。
背景技术
:网页抓取和数据抽取技术有很悠久的发展历史,通过各种技术手段实现网页内容的采集目的,而且,在每个计算技术发展阶段,人们都在尝试使用更先进的技术和编程语言实现更强大的网站内容采集工具,现有常见的网页数据抓取方法如下1、使用网络爬虫技术实现网页抓取和数据抽取的方法网络爬虫即WebSpider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量是100X2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。在抓取网页的时候,网络蜘蛛一般有两种策略广度优先和深度优先。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,每个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,一个网站中A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于第2层,I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取,但对于一些网站,他们希望搜索引擎能搜索到他们的内容,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。2、使用微软技术实现网站内容抓取和数据抽取的方法如asp.net网页抓取的方法;传统ASP网页抓取数据的一般方法;kreenScrapinginC#即使用C#填写R)rm表达,post后抓取网页的方法。3、使用Java技术实现网站内容抓取和数据抽取的方法如使用Nutch的两种Htmlparser工具(NekoHTML和TagSoup)实现html的提取的方法JSP实现网页抓取的方法;使用Java实现批量提取网页数据的的方法,没有采用正则表达式方法,而是基于DOM的方法。4、使用PHP技术实现网站内容抓取和数据抽取的方法5、使用Delphi技术实现网站内容抓取和数据抽取的方法如用Delphi7和hdy的TidHttp控件实现网站内容抓取和数据抽取。6、使用Python技术实现网站内容抓取和数据抽取的方法如使用有名的BeautifulSoup库解析HTML文档,还使用了urlliM库抓取网页,使用mechanize库模仿浏览器行为;使用Web应用自动测试程序Jelenium和Windmill提起JavaScript代码管理的内容。7、使用Flex技术实现网站内容抓取和数据抽取的方法如通过代理方式,或者编写服务器Actior^cript脚本程序绕开域安全策略,实现AdobeFlex开发网页抓取和网站内容数据抽取程序。8、使用Javascript实现网页抓取和数据抽取的方法9、使用Ruby实现网页抓取和数据抽取的方法对于一般的网页数据抓取,通过上述方法都能实现。通过对网页上面的信息过滤得到需要的信息(比如BBS需要抓取文章标题,作者,发帖时间,点击量,回复量等信息),如根据网页中Html语言标签的规律制作过滤用的正则表达式,从而可以精确过滤出以上信息,但是当需要抓取的面非常之广,如覆盖近80000个论坛,200多个大型新闻网站来说,此外还有不少知名的搜索引擎、博客、贴吧等网站,所以日数据更新量非常之庞大,不可能去为每一个BBS,每一个网站的每一个板块独立制作一套量身定制的过滤程序,即使不惜工本的制作出来,随着大量网站不停的改版,抓取程序也必须随之做精确的改动,这种维护工作量,这种更新速度显然是不现实的。由此可见,通常现有一般方法制作的抓取程序,实现精确过滤数据抓取的方式,只能针对个别网站或者较少数量网站进行数据抓取,考虑到过多的数据匹配程序的制作和维护,无法对未知的海量网站进行抓取,因此有必要提供新的网页数据抓取过滤方法。
发明内容本发明所要解决的技术问题是提供一种网页数据抓取过滤方法,可以实现快速、较准确的对海量网站进行数据抓取及过滤。本发明为解决上述技术问题而采用的技术方案是提供一种网页数据抓取过滤方法,包括如下步骤a)获取网页Html代码;b)将Html转化为XML序列表;c)对XML序列表利用信息关键词进行模糊匹配获取网页数据。上述的网页数据抓取过滤方法,其中,所述步骤a)使用C#.NET中的WebClient来读取某一网站的全部Html代码。上述的网页数据抓取过滤方法,其中,所述步骤b)将Html转化为XML序列表包括如下步骤删除网页脚本程序;删除网页HTML中常规无关项;再把网页Html全部标签化,并将Html中所有标签全部闭合;最后使用微软的XML序列化方法,使整个Html代码XML序列化,生成XML文件。上述的网页数据抓取过滤方法,其中,所述网页脚本程序为所有〈ScriptX/Script)之间的网页脚本程序,包括Javakript或VBkript程序。上述的网页数据抓取过滤方法,其中,所述网页HTML中常规无关项包括网页标题或网页描述。上述的网页数据抓取过滤方法,其中,所述步骤c)中的网页数据为BBS列表,获取过程包括如下步骤获取XML文件中表格节点的子节点数量;删除所有存在子表格的外层表格代码,留下最内层表格;删除所有行数小于5,且列数小于5的表格;利用正则表达式搜索匹配BBS文章中的关键词。上述的网页数据抓取过滤方法,其中,所述信息关键词包括“标题”、“作者”、“点击量/回复量”、“发帖时间”、“回复时间”。上述的网页数据抓取过滤方法,其中,所述关键词的判断顺序如下先判断“发帖时间”或“回复时间”的列;接着判断“点击量/回复量”的列;最后判断“标题”和“作者”的列。上述的网页数据抓取过滤方法,其中,所述“标题”和“作者”根据以下方法综合判断a.“标题”在“作者”的左边;b.“标题”的文字长度大于“作者”名字的长度;c.“标题”位于表格的前1,2,3列,“作者”紧贴“标题”的右侧列。上述的网页数据抓取过滤方法,其中,所述“发帖时间”和“回复时间”根据以下方法判断使用正则表达式匹配的方法,去匹配包含各种中文日期、中文时间、英文日期、英文时间、或者阿拉伯数字加中文字混合的常规的日期时间表达方式;如发现一列内容中包含2个日期或时间的,或者用“/”符号隔开的,则判断日期或时间小的那个是“发帖时间”,而日期或时间大的那个是最近“回复时间”;同样,如果遇到有两列都是日期时间的,则判断日期时间小的是“发帖时间”、日期时间大的是“回复时间”。本发明对比现有技术有如下的有益效果本发明提供的网页数据抓取过滤方法,通过先将Html全面XML序列化,再采用模糊过滤的方式获取XML文件中的网页数据,特别是对网页论坛,论坛文章列表基本上都是一个Html表格,其中一般都包含“文章标题”,“作者”,“发帖时间”,“回复时间”,“点击量”,“回复量”等主要信息关键词,先将表格划分为行和列,通过可能的多种日期呈现方式来模糊判定哪一列是日期,同理判定那一列是作者,回帖数,点击量,回复量等,从而较为精确的过滤出想要的信息,通过这种Html模糊匹配过滤的方式能够通过简单的4,5套方法识别95%以上的论坛和一般性的新闻网站内容,从而真正规避了海量网站匹配程序的制作和后期维护工作,实现快速、较准确的对海量网站数据进行数据抓取及过滤。图1为本发明网页数据抓取过滤方法流程示意图;图2为本发明将Html转化为XML序列表流程示意图;图3为本发明获取BBS文章中数据流程示意图。具体实施例方式下面结合附图和实施例对本发明作进一步的描述。图1为本发明网页数据抓取过滤方法流程示意图;图2为本发明将Html转化为XML序列表流程示意图;图3为本发明获取BBS文章中数据流程示意图。请参见图1,下面以抓取BBS文章中网页数据为例详细说明本发明的实施过程步骤SlOl获取网页Html代码先使用C#.NET中的WebClient的OpenRead(+URL)的方法,读取某一论坛文章列表的全部Html代码。步骤S102将Html全面XML序列化请继续参见图2,如步骤S201所示,首先把整体Html代码中的基础的无关代码统统删除,例如删除代码中的所有<ScriptX/^cript>之间的网页脚本程序,包括JavMcript或者VBkript程序等,因为脚本程序无法被XML解析,且肯定和所需的论坛内容无关。如步骤S202所示,再把网页HTML中常规无关项删除,比如网页标题(<title></title〉),网页关键i司(Keywords,艮口在<metaname="keywords"content="“/>中的内容,此处的关键词不是如BBS列表文章中的信息关键词,如“标题”、“作者”、“点击量/回复量”、“发帖时间”、“回复时间”),网页描述(description即在^etaname=〃description〃content="“/>中的内容)等,这样可以尽量减少代码的体积,增加过滤速度。如步骤S203所示,再把网页Html全部标签化,使Html中全部不闭合的标签,全部闭合(例如“换行”在Html里面是“<br>”,让它闭合的话,就要全部替换成“<br></br>”,<IMG>全部闭合成“〈IMGX/IMG〉”等),因为XML只认识闭合的标签,不闭合的标签如果存在的话,整个Html无法被XML序列化。接下来,如步骤S204所示,使用微软的XML序列化方法,使整个Html代码XML序列化,生成XML文件,至此XML序列化完成,XML序列化的目的是为了更好的使用XML节点管理方便的属性,方便的对XML各节点信息进行判断和提取。步骤S103对XML序列表利用信息关键词进行模糊匹配获取网页数据。对于需要的BBS列表的内容进行模糊的合理性程序判断,利用层层递进的方式,最终找到需要的内容。请继续参见图3,如步骤S301所示,首先在绝大多数情况下,一张Html的网页里面都具有很多表格〈tableX/table〉,并且大多数情况下表格和表格都是相互嵌套的(即很多层表格,大表格里面套小表格),而BBS文章列表的内容肯定是显示在最内层的表格中,所以借助利用C#.NET的XML的Node.ChildNode.Count的方法,可以获取XML文件中表格节点的子节点数量。如步骤S302所示,由此可以判断那些表格存在子表格,哪些表格不存在子表格,再把那些存在子表格的外层表格代码删除,留下的就都是不存在子表格的最内层表格。如步骤S303所示,绝大多数的BBS文章列表都是以〈tableX/table〉的方式存在的,同时BBS文章列表的列数一定>=5,因为一个BBS列表最起码要包含“文章标题”“作者”“点击量/回复量”“发帖时间”“回复时间”,而且保守的估计,一张BBS列表的行数一般全部>5行(<5行也可能这个文章板块内的文章太少,也可以暂时不抓取,等到它内容丰富起来再抓取),由此可以在XML文件中,把所有行数<5,且列数<5的表格全部删除。如步骤S304所示,利用正则表达式匹配的方法,来判断所剩下的表格中是否包含“文字Link”“各种可能的日期格式内容”“正整数数字”的信息,如果有一张表格能同时匹配到以上内容的话,则确定这张表格就是论坛文章表;找到论坛表格,并把其它的表格全部删除,进一步缩小XML体积。当确定了论坛的文章列表之后,可以继续模糊匹配和提取真正想要的详细信息,如“文章标题”“作者”“点击量/回复量”“发帖时间”“回复时间”等。首先,由于时间日期类型的变量最特殊,最好判断,所以在表格中寻找哪一列是发帖或者最近的回帖日期,例如使用正则表达式匹配的方法,去匹配包含各种中文日期、中文时间、英文日期、英文时间或者阿拉伯数字加中文字混合的常规的日期时间表达方式。在此有可能发现一列内容中包含2个日期或时间的,或者用“/”符号隔开的,就可以知道,日期时间小的那个是“发帖时间”,而日期时间大的那个必定是最近“回复时间”。同理,如果遇到有两列都是日期时间的,也可以判断哪一列是“发帖时间”、哪一列是“回复时间”了。在“发帖时间”和“回复时间”被确定之后,可以用相同的办法去判断“点击量”和“回复量”的列(“点击量”或“回复量”一定是包含正整数的列,数字大的一定是点击量,数字小的一定是回复量)。其次,再判断哪两列是“文章标题”和“作者”,一般来说“文章标题”和“作者”一般都是代超链接的纯文本,很难判断,但是一般可以根据如下方法综合判断1)绝大多数BBS文章列表的文章“标题”在“作者”的左边;2)大多数BBS的文章“标题”的文字长度要大于“作者”名字的长度;3)大多数BBS文章列表的“标题”都是表格的前1,2,3列,而“作者”则一般都是紧贴标题的右侧列。这样如果一个BBS列表中有50行数据样本的话,一般就可以非常准确的判断哪一列是“标题”,哪一列是“作者”了。最终通过这样的模糊匹配的方式可以以很高的准确度抓取到未知论坛板块的文章信息,写入SQL数据库。对新闻网站、搜索引擎、博客、贴吧以及视频网站的抓取,同样先将Html全面XML序列化,再采用模糊过滤的方式获取XML文件中的网页数据,在此不再一一赘述。本发明提供的网页数据抓取过滤方法,在舆情监控系统中实施如下月艮务器1CPUXeon5606,内存DDR3REGMGB,硬盘600GBSAS+ITBSATA;服务器2:CPUIntel132130内存16GB硬盘ITBSATA;两台机器皆为低成本的X86机架式服务器,放置于中国电信机房托管,机柜共享100M。服务器1为主服务器,负责80000个论坛的数据抓取和分析,整个系统的所有数据,同时还运行整个项目数据管理及分析平台供公司内部使用。服务器2为辅助服务器,主要负责200个新闻网站、几个主要搜索引擎、博客、贴吧、视频网站的数据抓取及过滤,并将过滤出的可靠数据写入服务器1的数据库中。MicrosoftWindowsServerwindowsserver2003以上);需要Microsoft.NETFramework3.5SPl;需要Ajax.NET2.0扩展支持;需要MicrosoftSQLServer2005/2008支持。实施的方法本舆情监控系统中包含两个软件系统,一个是数据抓取程序,为一个普通的WindoWS32bit或64bitexe应用程序,不需要安装即可使用,另外一个是数据管理及分析平台,也为常规的B/S结构软件,所以其安装方式同普通B/S系统完全相同。目前运行状况30000个重点论坛3-4小时可以抓取及过滤一次,80000个全部可以在10小时内抓取过滤一次,剩余200个新闻网站、几个主要搜索引擎、博客、贴吧、视频网站可以在12个小时内抓取过滤一次,已基本满足实际使用需求。综上所述,本发明提供的网页数据抓取过滤方法通过先将Html全面XML序列化,再采用模糊过滤的方式获取XML文件中的网页数据,从而实现快速、较准确的对海量网站数据进行抓取及过滤,这种Html模糊匹配过滤的方式能够通过简单的4、5套方法识别95%以上的论坛,和一般性的新闻网站内容,从而真正规避了海量网站匹配程序的制作和后期维护工作。虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。权利要求1.一种网页数据抓取过滤方法,其特征在于,包括如下步骤a)获取网页Html代码;b)将Html转化为XML序列表;c)对XML序列表利用信息关键词进行模糊匹配获取网页数据。2.如权利要求1所述的网页数据抓取过滤方法,其特征在于,所述步骤a)使用C#.NET中的WebClient来读取某一网站的全部Html代码。3.如权利要求1所述的网页数据抓取过滤方法,其特征在于,所述步骤b)将Html转化为XML序列表包括如下步骤删除网页脚本程序;删除网页HTML中常规无关项;再把网页Html全部标签化,并将Html中所有标签全部闭合;最后使用微软的XML序列化方法,使整个Html代码XML序列化,生成XML文件。4.如权利要求3所述的网页数据抓取过滤方法,其特征在于,所述网页脚本程序为所有<ScriptX/^cript>之间的网页脚本程序,包括Javakript或VBkript程序。5.如权利要求3所述的网页数据抓取过滤方法,其特征在于,所述网页HTML中常规无关项包括网页标题或网页描述。6.如权利要求1所述的网页数据抓取过滤方法,其特征在于,所述步骤c)中的网页数据为BBS列表,获取过程包括如下步骤获取XML文件中表格节点的子节点数量;删除所有存在子表格的外层表格代码,留下最内层表格;删除所有行数小于5,且列数小于5的表格;利用正则表达式搜索匹配BBS文章中的信息关键词。7.如权利要求6所述的网页数据抓取过滤方法,其特征在于,所述信息关键词包括“标题”、“作者”、“点击量/回复量”、“发帖时间”、“回复时间”。8.如权利要求7所述的网页数据抓取过滤方法,其特征在于,所述信息关键词的判断顺序如下先判断“发帖时间”或“回复时间”的列;接着判断“点击量/回复量”的列;最后判断“标题”和“作者”的列。9.如权利要求8所述的网页数据抓取过滤方法,其特征在于,所述“标题”和“作者”根据以下方法综合判断a.“标题”在“作者”的左边;b.“标题”的文字长度大于“作者”名字的长度;c.“标题”位于表格的前1,2,3列,“作者”紧贴“标题”的右侧列。10.如权利要求8所述的网页数据抓取过滤方法,其特征在于,所述“发帖时间”和“回复时间”根据以下方法判断使用正则表达式匹配的方法,去匹配包含各种中文日期、中文时间、英文日期、英文时间、或者阿拉伯数字加中文字混合的常规的日期时间表达方式;如发现一列内容中包含2个日期或时间的,或者用“/”符号隔开的,则判断日期或时间小的那个是“发帖时间”,而日期或时间大的那个是最近“回复时间”;同样,如果遇到有两列都是日期时间的,则判断日期时间小的是“发帖时间”、日期时间大的是“回复时间”。全文摘要本发明公开了一种网页数据抓取过滤方法,包括如下步骤a)获取网页Html代码;b)将Html转化为XML序列表;c)对XML序列表利用信息关键词进行模糊匹配获取网页数据。本发明提供的网页数据抓取过滤方法,通过先将Html全面XML序列化,再采用模糊过滤的方式获取XML文件中的网页数据,从而实现快速、较准确的对海量网站数据进行抓取及过滤。文档编号G06F17/30GK102567521SQ20111044805公开日2012年7月11日申请日期2011年12月29日优先权日2011年12月29日发明者金炜杰申请人:维构(上海)文化传媒有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1