2013-06-12 4 views
0

У меня есть нечетная проблема, я использовал Jsoup 1.7.2 какое-то время, без проблем, только сейчас, когда я пытаюсь восстановить основной заголовки этого сайта: www.jornaldamarinha.pt, используя этот код:Jsoup - проблема с выбором запроса запроса (?)

// Connecting... 
Document doc = Jsoup.connect("http://www.jornaldamarinha.pt") 
        .timeout(0) 
        .get(); 

// "*[class*=zincontent-wrap]" in "Jsoup idiom", means: 
// Select all tags that contains classes with "zincontent-wrap" on its name. 
Elements elems = doc.select("*[class*=zincontent-wrap]"); // Retrieves 0 results! 

int t = elems.size(); 
Log.w("INFO", "Total Headlines: " + t); 

// Loop trought all retrieved headlines: 
for (Element e : elems) { 
    String headline = e.select("a").text().toString(); 
    Log.w("HEADLINE", headline); 
}; 

Это не может ... Извлекает 0 результатов. (должен получить ~ 8)

вероятность того, что проблема вызвана:

  1. Чужие ... (по аналогии с андроидов, но уродливее ...)
  2. Кодировка сайта. (Я пытался кодировать входящий HTML-код с ISO-8859-15, чтобы обрабатывать символы в португальском языке, но проблема остается)
  3. Отформатированный HTML-код в формате HTML. (Я сомневаюсь, что это может быть проблемой, поскольку селектор отлично работает на «Попробуйте jsoup онлайн-страницу», а Jsoup обычно обрабатывает разбитый HTML очень хорошо)
  4. Использование символа минуса в имени класса ("-") возится с Jsoup. (Кажется, для меня, чтобы быть главным (или, по крайней мере, одна) причина проблемы)
  5. Что-то еще ... (очень вероятно!)

НО ... в http://try.jsoup.org, если я принести URL: http://www.jornaldamarinha.pt с помощью этого CSS запроса:

*[class*=zincontent-wrap] 

Все работает просто замечательно, там! (Извлекает все ~ 8 правильных результатов!)


SO ... возобновить все, что мне нужно это делать именно то, что делает, что веб-страницы, но с помощью кода.

СПАСИБО, заблаговременно, за любой свет или обходной путь, об этом! :)

ответ

2

РЕШЕНИЕ! ... В конце концов, все, что было в приведенном выше коде, работало правильно, как я подозревал, кроме ... Этот запрос CSS разбивается на «пользовательский агент по умолчанию» для Android. Я просто подумал, что установка «userAgent» на метод подключения Jsoup - ОЧЕНЬ важно! Итак, я отредактировал свой код следующим образом, и ... Теперь работает как шарм! (Точно с таким же результатами, как и в http://try.jsoup.org вебе-странице)

Document doc = Jsoup.connect("http://www.jornaldamarinha.pt") 
        .userAgent("Mozilla/5.0 Gecko/20100101 Firefox/21.0") 
        .timeout(0) 
        .get(); 

Надеется, что это помогает кто-либо другое тоже! :)

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