2011-03-25 104 views
0

我想使用Jsoup從buy.com頁面提取評論和評分信息。問題是我似乎無法弄清楚如何做到這一點,因爲每個評論的編號因其編號而異。例如回顧11號看起來是這樣的:使用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>

而回顧12號將有ID:CTL12 我怎樣才能提取查看頁面中所有評論的內容和評分?

回答

1

我有點晚,但我希望它可以幫助你和其他人可能會發現相同的問題!

你應該嘗試這樣的事:

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

這個例子使用了大量的Jsoup select方法。您可以在Jsoup Cookbook中找到正確的參數語法。