2016-03-06 31 views
-1

我想學習jsoup.I的基本方法試圖讓一個特定的web page.But我用stackoverflow鏈接,然後所有的超鏈接 ,我無法獲得該網頁上的所有鏈接,但在另一邊時,我改成了 javatpoint它的工作。爲什麼「http://www.stackoverflow.com」沒有得到解析,但「http://www.javatpoint.com/java-tutorial」得到解析

有人可以解釋爲什麼?

這是代碼。

import java.io.IOException; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 
import org.jsoup.*; 
import org.jsoup.nodes.*; 

import java.io.*; 

import org.jsoup.nodes.Document; 

class Repo { 
    // String html; 
    public static void main(String s[]) throws IOException { 
     try { 
      Document doc = Jsoup.connect("http://www.javatpoint.com/java-tutorial").get(); 
      // Document doc=Jsoup.connect("http://www.stackoverflow.com").get(); 

      System.out.println("doc"); 
      // Elements link=(Elements)doc.select("span[class]"); 
      // Elements link = doc.select("span").first(); 
      // Elements link = (Elements)doc.select("span"); 
      Elements link = (Elements) doc.select("a[href]"); 

      for (Element el : link) { 
       // System.out.print("-"); 
       // System.out.println(el.attr("class")); 
       String str = el.attr("href"); 
       System.out.println(str); 

      } 
     } catch (Exception e) { 
     } 
    } 
} 
+0

在「stackoverflow」的情況下,控制檯上不會打印任何東西。 – a874

+3

可能有一個例外,您跳過,因此您不會看到問題所在。 – hotzst

+0

@ hotzst,我現在添加了IOException,所以它的狀態碼= 403錯誤。這意味着解析在stackoverflow上是被禁止的。感謝幫助 – a874

回答

2

許多網站需要有效的http請求來攜帶某些標頭。一個突出的例子是userAgent頭。因此,例如,將這項工作:

Document doc = Jsoup 
    .connect("http://www.stackoverflow.com") 
    .userAgent("Mozilla/5.0") 
    .get(); 

旁註: 你應該從未嘗試捕捉異常,然後靜靜地忽略可能的失敗案例。至少在那裏做一些日誌記錄 - 否則你的程序將很難調試。

+0

,非常感謝。我幾乎失去了希望我能夠解析這個頁面。 – a874

+2

對於你可能想看看這個網址:http://api.stackexchange.com/ – luksch