2015-12-16 7 views
0

Я уже могу перемещаться по сайту и получать все ссылки, которые мне нужны. Но моя главная цель - получить комментарии от отелей. Я использую этот сайт http://www.booking.com/hotel/pt/park-italia-flat.pt-pt.html?label=gen173nr-17CAEoggJCAlhYSDNiBW5vcmVmaLsBiAEBmAEvuAEEyAEE2AEB6AEB-AEL;sid=637e7af0c3009aa9ea132a960e2d2d40;dcid=4;ucfs=1;room1=A,A;srfid=b8260a1c264a3873291a9061733a43536a4d35c2X979#tab-reviews Я могу получить, где с помощью jsoup нет проблем, но теперь я не знаю, как получить текст. Я уже пробовал getElementsByTag и getText и другие решения. Это можно сделать с помощью jsoup или мне нужна другая библиотека. Я пытаюсь таким образом получить текст. Но текст, который появляется, не то, что я хочу.Jsoup получить текст с сайта

 Document doc ; 
     try { 
      doc = Jsoup.connect(pair.getValue().toString() + "#tab-reviews").get(); 
      Elements scriptElements = doc.getElementsMatchingText("span"); 
      for (Element link : scriptElements) { 
       System.out.printf(" Text: <%s> \n", link.text()); 
      } 

     } catch (IOException ex) { 
      Logger.getLogger(GetComentsThread.class.getName()).log(Level.SEVERE, null, ex); 
     } 

Для получения URL-адресов я использую что-то вроде этого.

Pattern pattern = Pattern.compile("src=destinationfinder"); 
      Document doc = Jsoup.connect(url).get(); 
      Elements links = doc.select("a[href]"); 
      for (Element link : links) { 
       Matcher matcher = pattern.matcher(link.attr("abs:href")); 
       if (matcher.find()) { 
        dest = link.attr("abs:href"); 
        break; 
       } 
      } 

Теперь я могу получить некоторые отзывы, но только положительные не знаю, почему

doc = Jsoup.connect(pair.getValue().toString() + "#tab-reviews").get(); 
        //doc = Jsoup.connect("http://www.booking.com/hotel/pt/pestanaportohotel.pt-pt.html?label=gen173nr-17CAEoggJCAlhYSDNiBW5vcmVmaLsBiAEBmAEvuAEEyAEE2AEB6AEB-AEL;sid=cff2dddd95e71c0768847a554584c888;dcid=4;dist=0;group_adults=2;room1=A%2CA;sb_price_type=total;srfid=798bd6b01ea1dba53ee6b6b945dda1f623859730X2;type=total;ucfs=1&#tab-reviews").get(); 
        String teste="p.trackit"; 


        Elements scriptElements = doc.select(teste); 
        for (Element link : scriptElements) { 

         //System.out.printf(" Text: <%s> ...%s\n", link.text(),link.attr("class=\"review_pos\"")); 
         System.out.printf(" Text: <> ...%s\n",link.text()); 

        } 
+0

Пожалуйста, улучшить этот вопрос: показать код, который вы пытались, показать, что вы получаете против того, что вы ожидаете, спросите, как конкретный вопрос, как это возможно в отношении команд JSoup , –

+3

попробуйте использовать http://try.jsoup.org. –

+0

@AbhijitGaikwad: круто! Я этого раньше не видел. –

ответ

1

Отзывы загружаются с использованием запроса AJAX на номер another url.

Здесь вы можете получить всю необходимую информацию.

Ответ:

<li class=" 
    review_item 
    clearfix 
    "> 
    <p class="review_item_date"> 
    16 de Setembro de 2015 
    </p> 
    <div class="review_item_reviewer"> 
    <h4> 
     Beatriz 
    </h4> 
    <span class="reviewer_country"> 
    <span class="reviewer_country_flag sflag slang-br"> 
    </span> 
    Brasil 
    </span> 
    </div> 
    <!-- .review_item_reviewer --> 
    <div class="review_item_review"> 
    <div class=" 
     review_item_review_container 
     lang_ltr 
     seo_reviews_item 
     "> 
     <div class="review_item_review_header"> 
     <div class=" 
      review_item_header_score_container 
      "> 
      <div class="review_item_review_score jq_tooltip high_score_tooltip" title=" 
      Excepcional 
      "> 
      9,6 
      </div> 
     </div> 
     <div class="review_item_header_content_container"> 
      <div class="review_item_header_content seo_review_title"> 
      Excepcional 
      </div> 
     </div> 
     </div> 
     <ul class="review_item_info_tags"> 
     <li class="review_info_tag"><span class="bullet">&bull;</span> Viagem de lazer</li> 
     <li class="review_info_tag"><span class="bullet">&bull;</span> Família</li> 
     <li class="review_info_tag"><span class="bullet">&bull;</span> Apartamento com Varanda</li> 
     <li class="review_info_tag"><span class="bullet">&bull;</span> Ficou 5 noites</li> 
     <li class="review_info_tag"><span class="bullet">&bull;</span> Submetido através de dispositivo móvel</li> 
     </ul> 
     <div class="review_item_review_content"> 
     <p class="review_pos"><i class="review_item_icon">&#45575;</i>Conforto, perto do centro, perto de um lindo mercado, bem decorado, com todo material necessário para fazer as refeições, Wi-Fi excelente</p> 
     </div> 
    </div> 
    </div> 
</li> 
0

выглядит как вам просто нужно использовать jsoup, чтобы получить содержание от класса = «review_pos» и класс = "review_neg "

+0

Проблема в том, что в исходном коде, который не существует – user3591111

+1

http://jsoup.org/cookbook/extracting-data/selector-syntax указывает, что вы можете настроить таргетинг на класс ... возможно, придется полный xpath, но он выглядит очень выполнимым – Gugg