プログラミング中またはネットワーククローラーの作成時に、HTMLは有用なデータを抽出するために解析する必要があることがよくあります。優れたツールは特に便利で、多くのヘルプを提供できます。
それを使用した後:HTMLCleanerはHTMLParser、特にHTMLCleanerのXPathよりも優れていると感じています。
HTMLCLEANERの例を作成しましょう。要件は次のとおりです。タイトルのリンク、 "my_href"、およびdiv class = "d_1″のすべてのLiコンテンツを取り出します。
1。HTMLCLEANER使用:
1。HTMLCLEANER
HTMLCleanerは、オープンソースのJava言語HTMLドキュメントパーサーです。 HTMLCLEANERは、HTMLドキュメントの各要素を再編成し、優れた構造(よく形成された)でHTMLドキュメントを生成できます。デフォルトで続くルールは、ほとんどのWebブラウザーがドキュメントのモデルとして使用するルールに似ています。ただし、ユーザーは、フィルタリングとマッチングのためのカスタムタグとルールを提供できます。
ホームアドレス:http://htmlcleaner.sourceforge.net/
アドレスをダウンロード://www.vevb.com/softs/364983.html
2。基本的な例、ウィキペディアの空港情報を入手してください
html-class-decmo.html
HTML-CLEAN-DEMO.HTML <! ://www.w3.org/1999/xhtml "xml:lang =" zh-cn "dir =" ltr "> <high> <meta http-equiv =" content-seype "content =" text/html; = gbk " /> <meta http-equiv =" content-language "content =" zh-cn " /> <title> html clean demo < /head> <body> <div class =" d_1 "> <ul> < li> bar </li> <li> foo </li> <li> gzz </li> </ul> </div> <div> <ul> <li> <a name = "my_href" href = " 1.html "> text- </a> </li> <li> <a name =" my_href "href =" 2.html "> text-2 </a> </a> </</ a> </a> </a> </a> </a> </a> </a> </a> </a>/li> <li> <a name = "my_href" href = " 3.html "> text-3 </a> </li> <li> <a name =" my_href "href =" 4.html "> text-4 </a> </li> </ul> < /div> </body> </html>
htmlcleanerdemo.java
パッケージcom.hava.file; tagnode node = clean(new file( "html/html-demo.html"); "gbk"); 0){system.out.println( "title ="+(tagnode)ns [0]); = node.evaluatexpath( "// div [@class = 'd_1']); for(object on:ns){tagnode n =(tagnode)on; ();} System.Out.println( "a:"); ( "href")+"、text ="+n.getText();}}}}
Cleaner.Clean()のパラメーターは、ファイル、URL、および文字列コンテンツです。より一般的に使用されるのは、evaluatexpath、getelementsbyattvalue、getelementsbynameメソッドです。さらに、HTMLCleanerは不規則なHTMLとの互換性があります。
ウィキペディアの空港情報を入手してください
java.unsupportedencodecception.htmlclener com.moore.util.httpclientutil;/*** uses:todo** @author bbdtek*/public class parserairport {private static logger logg = logg = logg erfactory.getlogger(parserairport.class);/*** @param argss * @throws unuportedencingexception * @throws xpatherexception */public static void main(string [] args)throws unportedencodexce ption、xpatherexception {string url = "http://zh.wikipedia.org/wiki/です%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%8C%E5%BD%E6%Ba%Ba%E5%Ba%E5%88 88%97%E8% a1%a8 "; string contents = httpclientutil.getil()。getcon(url); htmlcleaner hc = new htmlclener(); xpath =" // div [@class = 'mw-content-ltr'] // table [ @ class = 'wikitable + sortable'] // tbody // tr [@align = 'right'] "object [] objarr = null; objarr = tn .evaluatexpath(xpath); if(objarr!= null && objarr.length> 0){for(object obj:objarr){tagnode tntr =(tagnode)obj; objarrtr.evaluatexpath(xptr);情報(str);}}}}}
第二に、Xpathの最初の探索
1。Xpathの紹介:
XPathは、XMLドキュメントで情報を検索する言語です。 XPathは、XMLドキュメントで要素と属性を通過するために使用できます。
2。XPathノードを選択します
XPathはパス式を使用して、XMLドキュメントのノードを選択します。ノードはパスまたはステップで選択されます。
最も有用なパス式を以下に示します。
表現 | 説明する |
---|---|
nodename | このノードのすべてのサブノードを選択します。 |
/ / | ルートノードから選択します。 |
// | 位置を考慮せずに、現在のノード選択の現在のノード選択のノードを選択します。 |
次に、 | 現在のノードを選択します。 |
... | 現在のノードの親ノードを選択します。 |
@ @ | 属性を選択します。 |
いくつかの一般的に使用される式
パス式 | 結果 |
---|---|
/書店/本[1] | 書店サブエレメントに属する最初の本要素を選択します。 |
/bookstore/book [last()]] | 書店サブエレメントに属する最後の本要素を選択します。 |
/bookstore/book [last()-1] | 書店サブエレメントに属する2番目の本要素を選択します。 |
/bookstore/book [position()<3] | 書店要素に属する本屋の本要素の2つの正面を選択します。 |
// title [@lang] | Langという名前の属性を持つすべてのタイトル要素を選択します。 |
// title [@lang = 'eng'] | すべてのタイトル要素を選択すると、これらの要素にはENGのLang属性があります。 |
/書店/本[価格> 35.00] | 書店要素のすべての本要素を選択すると、価格要素の値は35.00を超える必要があります。 |
/bookstore/book [価格> 35.00-/タイトル | 書店要素の本要素のすべてのタイトル要素を選択すると、価格要素の値は35.00を超える必要があります。 |