Theo nguồn HTML của http://google.com vào nút "Tôi cảm thấy may mắn" có một cái tên của btnI
:
<input value="I'm Feeling Lucky" name="btnI" type="submit" onclick="..." />
Vì vậy, chỉ cần thêm btnI
tham số chuỗi truy vấn nên làm (giá trị không quan trọng):
http://www.google.com/search?hl=en&btnI=1&q=your+search+term
Vì vậy, Jsoup này nên làm:
String url = "http://www.google.com/search?hl=en&btnI=1&q=balusc";
Document document = Jsoup.connect(url).get();
System.out.println(document.title());
Tuy nhiên, điều này đã đưa ra một lỗi 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)
Có lẽ Google đã đánh hơi tác nhân người dùng và khám phá nó là Java. Vì vậy, tôi đã thay đổi nó:
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());
sản lượng này (như dự kiến):
Các BalusC Mã
Các 403 là tuy nhiên một dấu hiệu cho thấy Google là không nhất thiết phải hài lòng với chương trình như thế. Bạn có thể nhận được (tạm thời) IP bị cấm khi bạn làm điều này quá thường xuyên.
Ý của bạn là JSONP? API tìm kiếm của Google là http://code.google.com/apis/customsearch/v1/overview.html – ceejayoz
@Ceejayoz: đặt con chuột của bạn lên trên thẻ '[jsoup]' bên dưới câu hỏi cho đến khi một cửa sổ bật lên hiển thị và sau đó nhấp vào * thông tin * liên kết để tìm hiểu về nó. – BalusC
@BalusC Tôi cho rằng đó là một yêu cầu đủ để làm rõ, xem xét nội dung câu hỏi và JSOUP một chữ cái, một chữ cái. – ceejayoz