2017-06-05 169 views
2

我無法使用Jsoup提取Web內容。問題是 - 我得到的比我需要的更多!這裏是網頁內容以連結文字是不強硬格式..使用JSOUP提取內容

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

我試圖提取標題,內容和LINKTEXT seperately .. 。我用這個代碼,當我試圖把這個代碼的內容採取這一數據

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"; 

我收到了一切。 (標題,內容,鏈接文字)。這個問題的原因是因爲所有這三個項目都在<li>之內。所以它正在迴應每個文本里面。所以,我怎樣才能得到它們作爲不同的字符串。我也想獲得鏈接 - www.www.somesite.com與數據一起..

+0

https://chrome.google.com/webstore/detail/ selectorgadget/mhjhnkcfbdhnjickkkdbjoemdmbfginb考慮使用這個工具,它告訴你確切的CSS選擇您選擇的物品。 –

+0

我正在開發Android應用 – Pzy64

+0

沒問題,css選擇器不依賴於平臺:D –

回答

4

按照Jsoup文檔text()方法被合併所選元素的文本和所有它的孩子。

你應該做的是使用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(); 

參見: