2013-04-28 6 views
1

Я пытаюсь использовать jsoup api, и моя первая попытка - извлечь из google.it текст кнопки поиска и показать его внутри текстового поля. я использовал этот код:Jsoup, не удалось получить объект

protected String doInBackground(Void... params) { 
    Document doc; 
    try { 
     doc = Jsoup.connect("http://www.google.it/").get(); 
     Elements cerca_con_google = doc.select("button[id=gbqfba[aria-label]]"); 
      int size = cerca_con_google.size(); 
      Log.i("AAAAAAAAAA", Integer.toString(size)); 

      if(cerca_con_google != null) { 
       return cerca_con_google.text(); 
      } 
      return "foo"; 
} 

но размер элементов всегда равен нулю. Может быть, я ошибаюсь в вопросе селектора внутри метода select ... Или что-то еще?

+0

Я уверен, что Google изменяет идентификаторы элементов, время от времени. Это может быть проблемой. – TomTasche

+0

У меня теперь есть элемент id, и они те же самые несколько часов назад. – giozh

ответ

2

Google возвращает различный контент на основе значений заголовка, например. User-Agent.

public static void main(String... args) throws IOException { 
    { 
     System.out.println("-- Default header"); 
     Connection conn = Jsoup.connect("http://www.google.it/"); 
     Document document = conn.get(); 

     { 
      Elements elems = document.select("input"); 
      System.out.println("input - " + elems.size()); 
      for (Element elem : elems) { 
       System.out.println("input [" + elem.attributes() + "]"); 
      } 
     } 
     { 
      Elements elems = document.select("button"); 
      System.out.println("button - " + elems.size()); 
      for (Element elem : elems) { 
       System.out.println("button [" + elem.attributes() + "]"); 
      } 
     } 
    } 
    { 
     System.out.println("-- Custom header"); 
     Connection conn = Jsoup.connect("http://www.google.it/"); 
     conn.header("User-Agent", "Firefox/20.0"); 
     Document document = conn.get(); 

     { 
      Elements elems = document.select("input"); 
      System.out.println("input - " + elems.size()); 
      for (Element elem : elems) { 
       System.out.println("input [" + elem.attributes() + "]"); 
      } 
     } 
     { 
      Elements elems = document.select("button"); 
      System.out.println("button - " + elems.size()); 
      for (Element elem : elems) { 
       System.out.println("button [" + elem.attributes() + "]"); 
      } 
     } 
     { 
      Element elem = document.select("button#gbqfbb").first(); 
      System.out.println(); 
      System.out.println("button#gbqfbb = " + elem); 
     } 
    } 
} 

Выход

-- Default header 
input - 7 
input [ name="ie" value="ISO-8859-1" type="hidden"] 
input [ value="it" name="hl" type="hidden"] 
input [ name="source" type="hidden" value="hp"] 
input [ autocomplete="off" class="lst" value="" title="Cerca con Google" maxlength="2048" name="q" size="57" style="color:#000;margin:0;padding:5px 8px 0 6px;vertical-align:top"] 
input [ class="lsb" value="Cerca con Google" name="btnG" type="submit"] 
input [ class="lsb" value="Mi sento fortunato" name="btnI" type="submit" onclick="if(this.form.q.value)this.checked=1; else top.location='/doodles/'"] 
input [ type="hidden" id="gbv" name="gbv" value="1"] 
button - 0 
-- Custom header 
input - 4 
input [ type="hidden" name="output" value="search"] 
input [ type="hidden" name="ie" value="UTF-8"] 
input [ type="hidden" name="sclient" value="psy-ab"] 
input [ id="gbqfq" class="gbqfif" name="q" type="text" autocomplete="off" value=""] 
button - 3 
button [ id="gbqfb" aria-label="Cerca con Google" class="gbqfb" name="btnG"] 
button [ id="gbqfba" aria-label="Cerca con Google" name="btnK" class="gbqfba"] 
button [ id="gbqfbb" aria-label="Mi sento fortunato" name="btnI" class="gbqfba" onclick="if(this.form.q.value)this.checked=1;else window.top.location='/doodles/'"] 

button#gbqfbb = <button id="gbqfbb" aria-label="Mi sento fortunato" name="btnI" class="gbqfba" onclick="if(this.form.q.value)this.checked=1;else window.top.location='/doodles/'"><span id="gbqfsb">Mi sento fortunato</span></button> 
+0

@giozh Было ли это полезно, пожалуйста? – Vitaly

0

Я думаю, вы используете неправильный селектор. Вместо этого используйте кнопку [id = gbqfba].

Смежные вопросы