2017-06-05 6 views
2

Ich habe Probleme beim Extrahieren von Web-Inhalten mit Jsoup. Das Problem ist, dass ich mehr bekomme, als ich brauche! Hier ist das Format von Web-Inhalten ..Extrahieren von Inhalt mit JSOUP

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

Ich versuche, Titel, Inhalt und linktext separat zu extrahieren .. Unter Linktext nicht hart war. Ich habe diesen Code verwendet, um die Daten zu nehmen

Wenn ich versuche, den Inhalt mit diesem Code zu nehmen.

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

Ich bekomme alles. (Titel, Inhalt, LinkText). Der Grund für dieses Problem liegt darin, dass alle drei Elemente innerhalb von <li> liegen. So stellt es jeden Text wieder her. Wie also kann ich sie als verschiedene Strings erhalten? Ich möchte auch die Link- www.www.somesite.com zusammen mit den Daten bekommen ..

+0

https://chrome.google.com/webstore/detail/ selectorgadget/mhjhnkcfbdhnhickkkdbjoemdmbfginb in Betracht ziehen, dieses Werkzeug zu benutzen, sagt es Ihnen das genaue css sel ector für den Artikel, den Sie auswählen. –

+0

Ich arbeite an einer Android App – Pzy64

+0

kein Problem, Css-Selektoren sind nicht plattformabhängig: D –

Antwort

4

Nach der Jsoup Dokumentation der text() Methode Text des ausgewählten Elements kombiniert wird und alle seine Kinder.

Was Sie tun sollten, ist die Verwendung der ownText()-Methode, die nur den Text im Besitz des ausgewählten Elements erhält.

Beantworten Sie Ihre zweite Frage: Um das href Attribut von <a> Tag Verwendung zu erhalten: element.attr("href").

Ganze sollte wie folgt aussehen:

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(); 

See: