2015-12-12 2 views
0

Это китайский веб-сайт. (Link)Jsoup не работает должным образом на указанном сайте

Я хочу использовать Jsoup разобрать этот сайт, но он, кажется, Jsoup не работает.

Очень простой код:

Document doc = Jsoup.connect("http://pchome.megatime.com.tw/stock/sid1101.html") 
      .timeout(0).get(); 
Elements links = doc.select("a"); 

for(Element e : links) { 
    System.out.println(e.text()); 
} 

И ничего выходит.

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

+0

Большое спасибо. Оно работает. –

+0

Я хочу задать вопрос: Какова цель указания агента пользователя? Нужен ли пользовательский агент для добавления независимо от того, какие URL-адреса? Спасибо за ваш ответ. –

ответ

2

Сайт делает забавную вещь, сначала он возвращает перенаправление (http-код 302), а затем возвращает мини-страницу, которая передает форму с параметром is_check=1. Мы должны следовать всем этим шагам.

Кроме того, вам необходимо указать агент пользователя.

Обобщая, просто сделать:

Response res = Jsoup.connect("http://pchome.megatime.com.tw/stock/sid1101.html") 
     .followRedirects(false) 
     .timeout(0) 
     .method(Method.GET) 
     .header("User-Agent", "Mozilla/5.0") 
     .execute(); 

String location = res.header("Location"); 

res = Jsoup.connect("http://pchome.megatime.com.tw/stock/sid1101.html") 
     .timeout(0) 
     .data("is_check", "1") 
     .method(Method.POST) 
     .header("User-Agent", "Mozilla/5.0") 
     .header("Referer", location) 
     .execute(); 

Document doc = res.parse(); 
Elements links = doc.select("a"); 

for(Element e : links) { 
    System.out.println(e.text()); 
} 

И вы получите множество ссылок.

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