2016-09-12 5 views
0

bekommen Ich möchte Kommentar von der Website kratzen. Ich habe Probleme, p-Tag innerhalb der Klasse in jsoup zu bekommen. Beispiel HTML-Code ist unterWie man Kinder der Klasse in Jsoup

<html> 
<head> 
    <title>My webpage</title> 
</head> 
<body> 
    <div class="container"> 
    <div class="comment"> 
     <p>This is comment</p> 
    </div> 
    </div> 
</body> 
</html> 

Hier mein Java-Code ist

public static void main(String args[]){ 
    Document doc = null; 
    try { 

     doc = Jsoup.connect("https://homeshopping.pk/products/Amazon-Fire-Phone-%284G%2C-32GB%2C-Black%29-Price-in-Pakistan.html").get(); 
     System.out.println("Connect successfully"); 
     org.jsoup.select.Elements element = doc.select("div.post-message"); 

     System.out.println(element.get(0).text()); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 
} 
+0

zeigen Sie Ihren Code .. –

+0

PLZ entfernen Code-Kommentar und fügen Sie es zu Ihrer Frage (bearbeiten). –

+0

Ich habe die Frage bearbeiten und den Java-Code –

Antwort

0

Wenn Ihr Ziel auszudrucken This is comment ist, können Sie so etwas wie dies versuchen könnte:

org.jsoup.select.Elements element = doc.select("div.container").select("div.comment"); 
System.out.println(element.get(0).text()); 
2

den Kommentaren der Seite, die Sie abrufen möchten, ist kein einfaches HTML contant. Die Kommentare werden nach dem erstmaligen Laden der Seite per JavaScript in das DOM geladen. JSoup ist ein HTML-Parser, daher können Sie die Kommentare der Seite nicht von Jsoup abrufen. Um diese Art von Inhalten zu erhalten, benötigen Sie eine eingebettete Browser-Komponente. Werfen Sie einen Blick auf diese Antwort: Is there a way to embed a browser in Java?

Der folgende Code ist für die spezifische HTML-Zeichenfolge, die Sie angegeben haben.

Try this:

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Elements;  
public class Test { 

public static void main(String[] arg) 
{ 
    Document doc = null; 
    try { 

     doc = Jsoup.parse("<html> " 
       + "<head> " 
       + "<title>My webpage</title> " 
       + "</head> <body> <div class=\"container\">  " 
       + "<div class=\"comment\">  " 
       + "<p>This is comment</p> " 
       + " </div> </div> </body></html> "); 

       Elements element = doc.select(".container").select(".comment"); 
       System.out.println(element.get(0).select("p").text()); 

    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); } 

} 
} 

Für die URL Verwendung Anschluss:

doc = Jsoup.connect("https://homeshopping.pk/products/Amazon-Fire-Phone-%284G%2C-32GB%2C-Black%29-Price-in-Pakistan.html").timeout(60*1000).userAgent("Mozilla").get(); 
1

Um Arijit-Lösung zu erweitern, wenn es mehrere <div> Tags mit einem comment Klasse sind, könnten Sie versuchen:

Document doc = null; 
    try 
    { 

     doc = Jsoup.parse("<html> " + "<head> " + "<title>My webpage</title> " 
       + "</head> <body> <div class=\"container\">  " + "<div class=\"comment foo\">  " 
       + "<p>This is comment</p> " + " </div> </div> </body></html> "); 

     Elements comments = doc.getElementsByAttributeValueMatching("class", "comment"); 
     Iterator<Element> iter = comments.iterator(); 
     while(iter.hasNext()) 
     { 
      Element e = iter.next(); 
      System.out.println(e.getElementsByTag("p").text()); 
     } 

    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

Wenn es andere Tags gibt, die dieteilenKlasse können Sie e.tagName() verwenden, um zu überprüfen, dass es sich um eine <div> handelt.

+0

Danke für Ihre Hilfe. Das funktioniert für mich. –

+0

@GhulamHaider wenn es hilft, vergessen Sie nicht, die Antwort zu akzeptieren –

Verwandte Themen