2011-03-25 4 views
0

Jsoup를 사용하여 buy.com 페이지에서 리뷰 및 평가 정보를 추출하고 싶습니다. 문제는 모든 리뷰의 ID가 번호에 따라 다르기 때문에 그렇게하는 방법을 알아낼 수 없다는 것입니다. 예를 들어 검토 번호 (11)는 다음과 같은 : 리뷰 수 (12)가 ID를했을 때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>

: 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에서 찾을 수 있습니다.