2011-03-25 4 views
0

Je souhaite extraire les avis et les évaluations d'une page buy.com à l'aide de Jsoup. Le problème est que je ne peux pas sembler comprendre comment faire parce que l'identification pour chaque revue diffère selon son nombre. Par exemple, le numéro d'examen 11 ressemble à ceci:Extrait des informations d'une page Web à l'aide de Jsoup

<a id="CustomerReviews_customerReviews_ctl11_reviewIdAnchor" name="a352496">&nbsp;</a><br />

<span id="CustomerReviews_customerReviews_ctl11_ratingInfo"><span class="blueText"><b>5</b> of <b>5</b></span> <b>Great Product</b> 12/15/2010<br /></span>

<span id="CustomerReviews_customerReviews_ctl11_reviewerInfo"><b>A customer</b> from x<br></span>

<span id="CustomerReviews_customerReviews_ctl11_reviewContent">content</span>

tandis que le numéro d'examen 12 aurait l'id: CTL12 Comment puis-je extraire le Examiner le contenu et la note pour tous les avis dans la page?

Répondre

1

Je suis un peu en retard mais j'espère que cela vous aidera, vous et les autres, à trouver le même problème!

Vous devriez essayer quelque chose comme ceci:

String code1 = "<span id=\"CustomerReviews_customerReviews_ctl11_ratingInfo\"><span class=\"blueText\"><b>1</b> of <b>5</b></span> <b>Great Product</b> 12/15/2010<br /></span>"; 
String code2 = "<span id=\"CustomerReviews_customerReviews_ctl12_ratingInfo\"><span class=\"blueText\"><b>2</b> of <b>5</b></span> <b>Bad product</b> 12/03/2010<br /></span>"; 

Document document = Jsoup.parse(code1 + code2); 

Elements elements = document.select("span[id~=CustomerReviews_customerReviews_ctl.*_ratingInfo] "); 

for (Element element : elements) { 
    System.out.println(element.outerHtml()); 
     Elements spanBlueText = element.select("span > span > b"); 
     String note = spanBlueText.get(0).text(); 
     String max = spanBlueText.get(1).text(); 
     System.out.println(" - note: " + note + "/" + max); 

     String comment = element.select("> b").text(); 
     System.out.println(" - comment: " + comment); 

     String date = element.text(); 
     date = date.substring(date.length() - 10); 
     System.out.println(" - date: " + date); 
} 

Cet exemple fait un usage intensif de la méthode Jsoup select. Vous pouvez trouver la syntaxe correcte pour ses arguments dans le Jsoup Cookbook.

Questions connexes