2016-04-14 8 views
1

私はjsoup内の特定の要素内のリンクを抽出しようとしています。ここではどのような私が行っているが、そのは動作していない: はenter image description hereJava jsoupのリンクの抽出

私がやろうとしています事は記事のクラスをwithingすべてのリンクを取得している:ここでは

Document doc = Jsoup.connect(url).get(); 
     Elements element = doc.select("section.row"); 
     Element s = element.first(); 
     Elements se = s.getElementsByTag("article"); 


      for(Element link : se){ 
       System.out.println("link :" + link.select("href")); 
      } 

はhtmlです。私はおそらくまずセクションクラス= "行"を選択しなければならないと思っていましたが、その後は記事クラスからのリンクが何とか得られましたが、それを動作させることはできませんでした。

+0

結果として何が得られますか? – GHajba

+0

上記のコードは何か結果を出すので、要素を印刷しようとしたときに画像の内容と同じ内容が表示されます – imoteb

答えて

1

これを試用してください。

Document doc = Jsoup.connect(url).get();  

    Elements section = doc.select("#main"); //select section with the id = main 
    Elements allArtTags = section.select("article"); // select all article tags in that section 
    for (Element artTag : allArtTags){ 
     Elements atags = artTag.select("a"); //select all a tags in each article tag 
     for(Element atag : atags){ 
      System.out.println(atag.text()); //print the link text or 
      System.out.println(atag.attr("href"));//print link 
     } 
    } 
+0

ありがとうございました – imoteb

+1

ネストされたループとセレクタは必要ありません。あなたは 'Elements atags = doc.select("#main article a ")'を実行することができます。 –

0

私は私のプロジェクトの一つで、これを使用しています:

final Elements elements = doc.select("div.item_list_section.item_description"); 

あなたがからのリンクを抽出する要素を取得する必要があります。

private static ... inspectElement(Element e) { 
     try { 
      final String name = getAttr(e, "a[href]"); 
      final String link = e.select("a").first().attr("href"); 
      //final String price = getAttr(e, "span.item_price"); 
      //final String category = getAttr(e, "span.item_category"); 
      //final String spec = getAttr(e, "span.item_specs"); 
      //final String datetime = e.select("time").attr("datetime"); 

      ... 
     } 
     catch (Exception ex) { return null; } 
} 

private static String getAttr(Element e, String what) { 
    try { 
     return e.select(what).first().text(); 
    } 
    catch (Exception ex) { return ""; } 
} 
関連する問題