2013-01-22 114 views
4

我嘗試使用下面的代碼來獲得谷歌的結果得到谷歌的結果:403錯誤,而使用jsoup

Document doc = con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get(); 

但我得到這個異常:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403,URL=http://www.google.com/search?q=lakshman 

403錯誤是指服務器禁止訪問,但我可以在Web瀏覽器中加載此URL。爲什麼Jsoup得到403錯誤?

+1

這也許是沒有'USER_AGENT'頭觸發403。我認爲這是對谷歌的服務條款在任何情況下對warning.then –

+0

oh.thanks的有一種通過自動化獲得谷歌結果的方法? – lakshman

+1

我認爲他們曾經有一個搜索API,但我不知道狀態是什麼 –

回答

26

你只需要用戶代理屬性添加到HTTP頭如下:

Jsoup.connect(itemUrl) 
    .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36") 
    .get() 
+0

謝謝!很棒! – ricardogobbo

2

其實,你可以僅僅通過增加一個用戶代理

doc = Jsoup.connect(url).timeout(timeout) 
        .userAgent("Mozilla") 

逃避403錯誤但是,這是對谷歌的政策,我認爲。編輯:谷歌捕捉機器人比你想象的更快。但是,您可以將其用作臨時解決方案。

1

REPLACE語句

Document doc =con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get(); 

with語句

Document doc=Jsoup.connect("http://www.google.com/search?q=lakshman").userAgent("Chrome").get(); 
0

試試這個:

Document doc =con.connect("http://www.google.com/search?q=lakshman").ignoreHttpErrors(true).timeout(5000).get(); 

以防userAgent無法正常工作就像它不適合我一樣。

0

在某些情況下,您需要設置引薦來源。它幫助我的情況。

完整的源here

try{ 

     String strText = 
       Jsoup 
       .connect("http://www.whatismyreferer.com") 
       .referrer("http://www.google.com") 
       .get() 
       .text(); 

     System.out.println(strText); 

    }catch(IOException ioe){ 
     System.out.println("Exception: " + ioe); 
    }