2011-03-25 24 views
0

Jsoupを使用してbuy.comページからレビューと評価情報を抽出します。問題は、すべてのレビューのIDがその番号によって異なるため、どのようにするかわからないようです。例えば、レビュー数11は次のようになります、レビュー数12は、IDを持っているだろうがJsoupを使用してWebページから情報を抽出

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

: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にあります。

関連する問題