2016-10-05 2 views
2

i bin neu in mit jsoup, so dass ich weiß nicht, warum folgt angezeigt:seltsam jsoup Verhalten, wenn die erste Element immer

... 
Document doc = Jsoup.connect("http://4pda.ru").get(); 
Elements articleElems = doc.select("article.post"); 
for(Element article:articleElems) 
{ 
    Element desc = article.select("div.description").first(); 
    Elements posts = desc.select("h1.list-post-title"); 
    Log.d(TAG,"size is "+posts.size()); // it's ok, size is 1 
    ... 
} 

so, wie Größe ist 1 i will erstes Element zu erhalten, ich ändern der Code wie folgt:

for(Element article:articleElems) 
{ 
    Element desc = article.select("div.description").first(); 
    Element post = desc.select("h1.list-post-title").first(); 
    Log.d(TAG,"post is "+post.toString()); // there NullPointerException throws 
    ... 
} 

ich dies nicht verstehen kann ...

+0

Ja, das scheint seltsam. Bitte fügen Sie auch den Code für die Verbindung mit der Quelle hinzu. –

+0

@ F.Klein gibt es: 'Dokument doc = Jsoup.connect (" http://4pda.ru ") .get(); Elemente articleElems = doc.select ("article.post"); ' – borune

Antwort

2

Sie Artikel sind die Auswahl, die h1.list-post-title
Sie nicht 0 haben kann verwenden. Hier ist die offizielle doc über has()
:has(seletor): find elements that contain elements matching the selector

hier die Lösung mit hat

Document doc = Jsoup.connect("http://4pda.ru").get(); 
    Elements articleElems = doc.select("article.post:has(h1.list-post-title)"); 
    for (Element article : articleElems) { 
     Element desc = article.select("div.description").first(); 
     Element post = desc.select("h1.list-post-title").first(); 
     System.out.println(post); 
    }