2017-06-05 13 views
2

Jsoupを使用してWebコンテンツを抽出するのに問題があります。問題は、私が必要とするものよりも多くを得ていることです!ここでは、WebコンテンツのフォーマットはLinkTextを撮る はタフではなかった..私は別々のタイトル、内容、linkTextを抽出しようとしています。..JSOUPを使用したコンテンツの抽出

<td> 
<ul> 
    <li> 
     <b> 
     Title 
     </b> 
    contents  
     <p> 
      <a href="www.somesite.com"><b>LinkText</b></a> 
     </p> 
    </li> 
</ul> 
</td> 

です。このコードを使用してそのデータを取得しました

String title = ""; 
Elements elements; 
Document document = Jsoup.connect(url).get(); 
elements = document.select("td ul li p a"); 
for (Element e : elements) 
title += "\n" + e.text() + "\n\n"; 

私はこのコードでコンテンツを取得しようとします。

String content = ""; 
Elements elements; 
Document document = Jsoup.connect(url).get(); 
elements = document.select("td ul li"); 
for (Element e : elements) 
content += "\n" + e.text() + "\n\n"; 

私はすべてを得ています。 (タイトル、コンテンツ、LinkText)。この問題の原因は、3つのアイテムがすべて<li>の中にあるからです。それで、すべてのテキストを内部で保持しています。どうしてこれらを別個のStringとして取得できますか?私はまた、text()方法が選択された要素とすべてその子の組み合わせテキストを取得Jsoupのドキュメントによると

+0

https://chrome.google.com/webstore/detail/ selectorgadget/mhjhnkcfbdhnjickkkdbjoemdmbfginbこのツールの使用を検討すると、正確なcss selあなたが選んだ項目のector。 –

+0

私はアンドロイドのアプリで働いています – Pzy64

+0

問題なし、CSSセレクタはプラットフォームに依存しません:D –

答えて

4

...データとともにリンク - www.www.somesite.comを取得したいです。

あなたがする必要があるのは、選択された要素が所有するテキストのみを取得するownText()メソッドを使用することです。

href属性を<a>タグにするには、element.attr("href")を使用してください。

次のように全体のものが見えるはずです。

Document document = Jsoup.connect(url).get(); 
String title = document.select("td ul li b").first().text(); 
String content = document.select("td ul li").first().ownText(); 
Element linkEl = document.select("td ul li p a").first(); 
String href = linkEl.attr("href"); 
String link = linkEl.text(); 

参照:

関連する問題