jsoupを使ってHTMLを解析します。

5117 ワード

////  http://www.jb51.net/article/43485.htm
    
    @Test
     public void  AnalysisHTMLByString()
     {
        String  html="

a.

"; Document doc = Jsoup.parse(html); Elements ele=doc.getElementsByTag("p"); for(Element e :ele) { System.out.println(e.text()); } } @Test public void AnlysisHTMLByFile() throws IOException { File file=new File(System.getProperty("user.dir")+"\\a.html"); Document doc=Jsoup.parse(file, "UTF-8"); Elements eles=doc.getElementsByTag("a"); for(Element e :eles) { System.out.println(e.text()); System.out.println(e.attr("href")); } Element ele =doc.getElementById("btn"); System.out.println(ele.html()); } @Test public void AnlysisHTMLByURL() throws IOException { int timeout=3000; Document doc= Jsoup.connect("http://www.cnblogs.com/rhythmK/").get(); // A System.out.println(" :"+ doc.getElementsByTag("a").size()); System.out.println(" ID:"+ doc.getElementById("navigator").html()); Elements eles= doc.select("#navigator"); for(Element ele :eles) { System.out.println(ele.html()); } }
Elementsというオブジェクトは、DOMに類似した一連の方法を提供して要素を検索し、データを抽出して処理する。具体的には、検索要素getElementById getElementsByTag(String)getElementsByClass(String classing)getElements ByAttribute(String key)(and related methods)Efith blings,EfintlementsnextElemenntSibling()、previous ElemenntSibling()Graph:parent()、children()、child()元素データatr(String key)取得属性atr(String key、String value)設定属性atributes(すべての属性を取得するid)classis Name()and classis Names()text(テキストコンテンツtext(String value)設定テキスト内容を取得します)(要素内HTML html設定要素内のHTMLコンテンツouterHtml()取得要素外HTMLコンテンツdata(たとえば、scriptとstyleタグ)を取得します。prepend(Stering)apping Text(String text)、prependText(Stering text)appendElement(String tagName)、prependElement(String tagName)
Selectorセレクタの概要tag name:タグによって要素を検索します。例えば、ans(:タグによって名前空間で要素を検索できます。例えば:fb name文法を使って元素を検索できます。例えば:masted[atribute]を利用して元素を検索します。例えば、[href][^atr]:属性名プレフィックスを利用して要素を検索することができます。例えば、HTML 5 Dataset属性を持つ要素[atr=value]:属性値を利用して要素を検索します。例えば、[href*=/path/][atr~=regex]:属性値を正規表現に合わせて要素を検索します。i)\.(png_jpe?g)*:この記号はすべての要素Selectorセレクタとマッチします。el((Cute)id:元素+IDを使用します。例えば、div(logoel.class:元素+class):div.masttheadel[atrd]:元素+class、たとえば、a[href]任意の要素を組み合わせます。例えば、「body」の要素のすべてのp要素parent>childをbody pで検索することができます。ある親要素の直接的なサブ要素を検索します。例えば、div.co nt>p元素を使って、body>*でbodyタグの下のすべての直接的なサブ要素siblingA+siblingBを検索することもできます。A元素の前の最初のクラスBを検索します。例えば、div.head+divsiblingA~siblingX:A元素を検索する前の同級X元素、例えば:h 1~pel、el、el:複数のセレクタを組み合わせて、いずれかのセレクタにマッチする唯一の要素を探します。例えば、div.logoダミーセレクタselectors:lt(n):どの元素の同級のインデックス値を探しますか?例えば、td:lt(3)は三列以下の要素を表します。gt(n):どの要素の同級のインデックス値がnより大きいかを検索します。例えば、div p:gt(2)はどのdivに2つ以上のp要素が含まれていますか?eq(n):どの要素の同級のインデックス値がnと等しいかを調べます。例えば、form input:eq(1)は一つのinputタグを含むForm元素を表します。例えば、div:has(p)は、どのdivがp要素を含むかを表しています。not(selector):選択器と一致しない要素を検索します。例えば、div:not(.logo)は、class=logo要素を含まないすべてのdivリストを表しています。contains(text):指定されたテキストを含む要素を検索します。検索は、大文字か?例えば、p:contains(jsoup):containsOwn(text):与えられたテキストを直接含む要素を検索します。matches(regex):どの要素のテキストマッチング指定の正規表現を検索しますか?i)login):matchesOwn(regex):テキストマッチング指定正規表現を含む要素を検索する注意:上記の疑似セレクタインデックスは0から始まり、つまり最初の要素インデックス値は0、第二の要素indexは1などはSelector API参照を参照して、より詳細な内容を知ることができる。