Извлечение информации с веб-страницы с помощью Jsoup - PullRequest
0 голосов
/ 25 марта 2011

Я хочу извлечь обзорную и рейтинговую информацию со страницы buy.com с помощью Jsoup.Проблема в том, что я не могу понять, как это сделать, потому что идентификатор каждого отзыва отличается в зависимости от его номера.Например, обзор № 11 выглядит примерно так:

<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 будет иметь идентификатор: ctl12 Как извлечь содержимое и рейтинг обзора для всех отзывов на странице?

1 Ответ

1 голос
/ 05 мая 2011

Я немного опоздал, но я надеюсь, что это поможет вам и другим, которые могут найти ту же проблему!

Вы должны попробовать что-то вроде этого:

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 .

...