2017-06-05 114 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(); 

参见: