HTMLParser抽取Web网页正文信息.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

提取网页主题相关内容

一般在浏览Web上的网页时会发现两部分内容:一部分是网页的主题信息,另一部分则是与主题内容无关的导航条、广告信息、版权信息等内容,我们称之为“噪音”内容。通过提取主题信息可以减少一半浏览时间,提高用户获取信息的速度,从而增强Web的可用性。那么如何准确、有效的获取Web网页的主题信息呢?下面给出了一种解决方案。

解析html

HTMLParser是一个对现有的HTML进行分析的快速实时的解析器,首先从(http://HTMLP/)下载htmlparser1_620050925.zip解压缩得htmlparser.jar,将htmlparser.jar添加到classpath中,并在程序中引入相应的HTMLParser包。类Parser是HTMLParser的入口,将HTML文本信息传给它,或者直接传递一个URL地址,如:Parserparser=newParser(“”);初始化一个Parser实例parser后,紧接着就是对所传入的HTML内容进行解析,方法parser.extractAllNodesThatAre(XXXTag.class)将HTML内容中存在的所有的标签XXXTag给解析出来放到一个列表list中去,几乎HTML的标签都有一个对应的类,比如LinkTag、ImageTag、FormTag、TableTag等等,这些标签类都在org.htmlparser.tags包中。根据要处理不同的标签传入不同的类,这种做法可以很方便地处理其他类型的标签。返回的列表中每个元素都是传入类的一个实例,通过这个实例可以访问到当前这个标签的起始位置、结束标签的位置以及包含在标签中的文本信息,同时也可以访问其父标签以及所有的子标签等等,同时可以通过toHtml方法来对标签中包含的HTML信息进行清洗,HTMLParser会自动把一些没有关闭的标签加上,这样所生成的字符串中就包含着完整的格式控制信息,在页面上显示这样的信息也不会破坏版面布局,达到了预期的效果。

例如:有如下不规范的html文件(有未关闭标签)

通过节点的toHtml()方法补全标签

通过节点的toHtml()方法补全标签

补全了没有关闭的标签

补全了没有关闭的标签

本系统采用先读取html文件并将其转换为字符串htmlString:

StringhtmlString=readHtmlFile(file);

然后将其作为Parser对象的构造参数:

Parserparser=Parser.createParser(htmlString,”gb2312”);

然后结合过滤器过滤出需要的标签节点。

过滤器

一般主题信息包含在下列标签中:table、tr、td、p、div等。所以如何过滤出这些节点标签呢?htmlparser提供了很好的支持:

NodeFilter[]filters=newNodeFilters[3];

filters[0]=newNodeClassFilter(TableTag.class);

filters[1]=newNodeClassFilter(ParagraphTag.class);

filters[2]=newNodeClassFilter(Div.class);

NodeFilterfilter=newOrFilter(filters);

NodeListlist=parser.extractAllNodesThatMatch(filter);

OrFilter是结合几种过滤条件的‘或’过滤器。通过以上代码就可以过滤得到所有的table、p和div节点。

例如:下面html文件经过以上过滤器过滤后就只得到所需的节点了

Html文件经过滤器过滤

Html文件经过滤器过滤

经过滤器过滤后得到的结果

经过滤器过滤后得到的结果

信息抽取、

1、p、div节点的内容相关性判定:

我们称包含文本信息的区域为内容块,本系统的核心是内容块的主题相关性判断。本系统所涉及的内容块节点为table、div、p。主题相关性判定(当然本系统认为div标签中如果还含其他标签,或者P标签中含有div,script或内嵌p标签,则认为主题不相关。)包含两部分:局部相关性判定(由局部相关度表示)和上下文相关性判定。局部相关度(LocalRel)由内容块节点中的非链接中文字符总数和链接总数决定,其计算公式为:

LocalRel=wordsNum/linkNum

当LocalRel大于等于L(其中L是局部相关度的阀值),称该块局部相关(如果linkNum为0且wordsNum大于14,认为局部相关)。上下文相关性即判定该内容块节点的前驱兄弟和后继兄弟

您可能关注的文档

文档评论(0)

192****9087 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档