300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > HtmlParser提取网页中的纯文本信息

HtmlParser提取网页中的纯文本信息

时间:2020-04-24 03:33:04

相关推荐

HtmlParser提取网页中的纯文本信息

转载自 HtmlParser提取网页中的纯文本信息

HTMLParser 一个解析web页面的开源类库。

准备学习下搜索方面的技术,就学习了些网络爬虫的知识。最近一直在一个点上困惑,如何提取一个网页上的纯文本信息。要使用正则表达式的话呢,需要考虑很多因素,而且标签也太多,不是很方便,效果也不好。就准备利用开源包,最后选择了HtmlParser。

在网上搜索如何利用HtmlParser提取页面信息。提取的结果都不是很理想,都包含了很多无用空格信息,还有很多JS代码。

如利用如下的代码:

publicvoidgetWebPageContent(StringhtmlContent){Parserparser=newParser();try{parser.setInputHTML(htmlContent);parser.setEncoding(parser.getURL());HtmlPagepage=newHtmlPage(parser);parser.visitAllNodesWith(page);logger.info(page.getTitle());NodeListlist=page.getBody();StringBuffersb=newStringBuffer();for(NodeIteratoriterator=list.elements();iterator.hasMoreNodes();){Nodenode=iterator.nextNode();logger.info(node.toPlainTextString());}catch(ParserExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}

就包含了很多的空格信息以及JS代码。

后来在HTMLParser的API中的org.htmlparser.beans.StringBean类的描述中找到如下一段文字:ExtractstringsfromaURL.Textwithin<SCRIPT></SCRIPT>tagsisremoved.Thetextwithin<PRE></PRE>tagsisnotaltered.ThepropertyStrings,whichistheoutputpropertyisnulluntilaURLisset.Soatypicalusageis:StringBeansb=newStringBean();sb.setLinks(false);sb.setReplaceNonBreakingSpaces(true);sb.setCollapse(true);sb.setURL("");//theHTTPisperformedhereStrings=sb.getStrings();

利用后,如下:/***根据提供的URL,获取此URL对应网页的纯文本信息*@paramurl提供的URL链接*@returnRL对应网页的纯文本信息*@throwsParserException*/publicStringgetText(Stringurl)throwsParserException{StringBeansb=newStringBean();//设置不需要得到页面所包含的链接信息sb.setLinks(false);//设置将不间断空格由正规空格所替代sb.setReplaceNonBreakingSpaces(true);//设置将一序列空格由一个单一空格所代替sb.setCollapse(true);//传入要解析的URLsb.setURL(url);//返回解析后的网页纯文本信息returnsb.getStrings();}

便可以解析出网页中的纯文本信息,而且效果很好

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。