2011-09-22 37 views
9

您可以使用Jsoup向Google提交搜索,但不是通過「Google搜索」使用「我很幸運」發送您的請求?我想捕獲將要返回的網站的名稱。Jsoup可以模擬按鈕嗎?

我看到很多提交表單的例子,但從來沒有一種方法來指定一個特定的按鈕來執行搜索或表單提交。

如果Jsoup不工作,會怎樣?

+0

你的意思是JSONP? Google的搜索API是http://code.google.com/apis/customsearch/v1/overview.html – ceejayoz

+0

@Ceejayoz:將鼠標放在問題下方的[[jsoup]'標籤上方,直到popbox顯示,然後單擊* info *鏈接瞭解它。 – BalusC

+0

@BalusC我會說這是一個足夠公平的要求澄清,考慮到問題的內容和全部大寫,一個字母的JSOUP。 – ceejayoz

回答

11

http://google.com HTML源代碼的「我感覺不錯」按鈕有btnI名稱:

<input value="I'm Feeling Lucky" name="btnI" type="submit" onclick="..." /> 

所以,只需添加btnI參數的查詢字符串應該做的(數值並不重要):

http://www.google.com/search?hl=en&btnI=1&q=your+search+term

所以,這Jsoup應該做的:

String url = "http://www.google.com/search?hl=en&btnI=1&q=balusc"; 
Document document = Jsoup.connect(url).get(); 
System.out.println(document.title()); 

然而,這給了403 (Forbidden)錯誤。

Exception in thread "main" java.io.IOException: 403 error loading URL http://www.google.com/search?hl=en&btnI=1&q=balusc 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:387) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364) 
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143) 
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132) 
    at test.Test.main(Test.java:17) 

也許谷歌是嗅探用戶代理,並發現它是Java的。所以,我改變了它:

String url = "http://www.google.com/search?hl=en&btnI=1&q=balusc"; 
Document document = Jsoup.connect(url).userAgent("Mozilla").get(); 
System.out.println(document.title()); 

該收益率(預期):

的BalusC代碼

403不過是一個跡象表明,谷歌是不是機器人不一定幸福像那樣。當你經常這樣做時,你可能會(暫時)禁止IP。

+0

謝謝BalusC。這完全回答了這個問題。我瞭解Google網站的URL請求是如何唯一的。我試圖找出是否可以從字面上編程Jsoup,以Google爲例點擊特定按鈕。我更好地闡明瞭我在本網站的其他問題中想要做的事情。這個問題在一個月內沒有得到答覆,並且感到沮喪,所以問了一個不同的問題,希望它能幫助我解決第一個問題。不幸的是,我的計劃因此而倒退,並且我很抱歉花時間回答了一個並未解決問題的問題。 – Brian

0

是的,它可以,如果你能夠弄清楚如何谷歌搜索查詢。但是,即使您會成功,Google也不會這麼做。您應該使用他們的官方API進行自動搜索查詢。

http://code.google.com/intl/en-US/apis/customsearch/v1/overview.html

+0

感謝您的回覆。然而,我只是以谷歌爲例。我有一個網站,我正嘗試使用JSOUP登錄並獲取一些信息。我不認爲我實際登錄。我試圖找出如何模擬按下「登錄」或「提交」按鈕一般來確保我實際登錄到網站。對困惑感到抱歉。 – Brian

2

我想嘗試用於導航低谷網站的HtmlUnit和JSOUP刮

+0

那麼htmlUnit和jSoup如何組合使用呢?編輯:得到它.. jSoup.parse可以解析由htmlUnit給出的html字符串 – tObi