2013-06-12 78 views
0

我在這裏有一個奇怪的問題,我一直在使用Jsoup 1.7.2一段時間,沒有問題,只有現在,當我嘗試檢索主從本網站的頭條新聞:www.jornaldamarinha.pt,使用此代碼:Jsoup - CSS查詢選擇器問題(?)

// 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. 網站編碼。 (我嘗試使用ISO-8859-15編碼傳入的HTML,以處理葡萄牙語特殊字符,但問題仍然存在)
  3. Mal格式的傳入HTML。 (我懷疑這可能是問題,因爲選擇器正常工作「嘗試jsoup在線網頁」,並且Jsoup通常處理破碎的HTML非常好)
  4. 在類名稱中使用減號(「 - 」 )正在與Jsoup混淆。 (看來,對我來說,是主要的(或至少,這個問題的一個)原因)
  5. 別的東西... (很有可能!)

BUT ...在http://try.jsoup.org如果我取的網址:使用此CSS查詢http://www.jornaldamarinha.pt

*[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(); 

希望這有助於其他人呢! :)