Według źródła HTML http://google.com przycisk „Czuję szczęście” ma nazwę btnI
:
<input value="I'm Feeling Lucky" name="btnI" type="submit" onclick="..." />
Tak, tylko dodanie parametru do łańcucha zapytania btnI
powinien zrobić (wartość nie ma znaczenia):
http://www.google.com/search?hl=en&btnI=1&q=your+search+term
Tak, to Jsoup powinien zrobić:
String url = "http://www.google.com/search?hl=en&btnI=1&q=balusc";
Document document = Jsoup.connect(url).get();
System.out.println(document.title());
Jednak ta dała błąd 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)
Być może Google wąchał agenta użytkownika i odkrył, że jest to Java. Tak, zmieniłem go:
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());
Daje to (zgodnie z oczekiwaniami):
Kodeksu BalusC
403 jest jednak wskazanie, że Google nie zawsze jest zadowolony z botami tak. Możesz uzyskać (tymczasowo) IP-banned, gdy robisz to zbyt często.
Masz na myśli JSONP? Interfejs API wyszukiwarki Google to http://code.google.com/apis/customsearch/v1/overview.html – ceejayoz
@ Ceejayoz: umieść mysz nad znacznikiem '[jsoup]' pod pytaniem, aż wyświetli się popbox, a następnie kliknij terminarz * info * link, aby się o tym dowiedzieć. – BalusC
@BalusC Powiedziałbym, że był to wystarczająco sprawiedliwy wniosek o wyjaśnienia, biorąc pod uwagę treść pytania i all-caps, jednoliterowy JSOUP. – ceejayoz