HtmlParser提取網頁中的純文字資訊-java
阿新 • • 發佈:2019-02-08
HTMLParser 一個解析web頁面的開源類庫。
準備學習下搜尋方面的技術,就學習了些網路爬蟲的知識。最近一直在一個點上困惑,如何提取一個網頁上的純文字資訊。要使用正則表示式的話呢,需要考慮很多因素,而且標籤也太多,不是很方便,效果也不好。就準備利用開源包,最後選擇了HtmlParser。
在網上搜索如何利用HtmlParser提取頁面資訊。提取的結果都不是很理想,都包含了很多無用空格資訊,還有很多JS程式碼。
如利用如下的程式碼:
Java程式碼
就包含了很多的空格資訊以及JS程式碼。
後來在HTMLParser的API中的org.htmlparser.beans.StringBean類的描述中找到如下一段文字:
Java程式碼
利用後,如下:
Java程式碼
準備學習下搜尋方面的技術,就學習了些網路爬蟲的知識。最近一直在一個點上困惑,如何提取一個網頁上的純文字資訊。要使用正則表示式的話呢,需要考慮很多因素,而且標籤也太多,不是很方便,效果也不好。就準備利用開源包,最後選擇了HtmlParser。
在網上搜索如何利用HtmlParser提取頁面資訊。提取的結果都不是很理想,都包含了很多無用空格資訊,還有很多JS程式碼。
如利用如下的程式碼:
Java程式碼
- publicvoid getWebPageContent(String htmlContent) {
- Parser parser = new Parser();
- try {
- parser.setInputHTML(htmlContent);
- parser.setEncoding(parser.getURL());
- HtmlPage page = new HtmlPage(parser);
- parser.visitAllNodesWith(page);
- logger.info(page.getTitle());
- NodeList list = page.getBody();
- StringBuffer sb = new StringBuffer();
- for (NodeIterator iterator = list.elements(); iterator
- .hasMoreNodes();) {
- Node node = iterator.nextNode();
- logger.info(node.toPlainTextString());
- } catch (ParserException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
就包含了很多的空格資訊以及JS程式碼。
後來在HTMLParser的API中的org.htmlparser.beans.StringBean類的描述中找到如下一段文字:
Java程式碼
- Extract strings from a URL.
- Text within <SCRIPT></SCRIPT> tags is removed.
- The text within <PRE></PRE> tags is not altered.
- The property Strings, which is the output property is null until a URL is set. So a typical usage is:
- StringBean sb = new StringBean ();
- sb.setLinks (false);
- sb.setReplaceNonBreakingSpaces (true);
- sb.setCollapse (true);
- sb.setURL ("http://www.netbeans.org"); // the HTTP is performed here
- String s = sb.getStrings ();
利用後,如下:
Java程式碼
- /**
- * 根據提供的URL,獲取此URL對應網頁的純文字資訊
- * @param url 提供的URL連結
- * @return RL對應網頁的純文字資訊
- * @throws ParserException
- */
- public String getText(String url)throws ParserException{
- StringBean sb = new StringBean();
- //設定不需要得到頁面所包含的連結資訊
- sb.setLinks(false);
- //設定將不間斷空格由正規空格所替代
- sb.setReplaceNonBreakingSpaces(true);
- //設定將一序列空格由一個單一空格所代替
- sb.setCollapse(true);
- //傳入要解析的URL
- sb.setURL(url);
- //返回解析後的網頁純文字資訊
- return sb.getStrings();
- }