您可以使用Jsoup向Google提交搜索,但不是通过“Google搜索”发送您的请求,而是使用“我感觉到幸运”?我想捕获将被返回的网站的名称.
我看到很多提交表单的例子,但从来没有一种方法来指定一个特定的按钮来执行搜索或表单提交.
如果Jsoup不行,那会怎样?
解决方法
根据
http://google.com的HTML源码,“我感觉幸运”按钮有一个名字btnI:
<input value="I'm Feeling Lucky" name="btnI" type="submit" onclick="..." />
因此,只需将btnI参数添加到查询字符串即可(该值无关紧要):
07001
所以,这个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)
也许Google正在嗅探用户代理并将其发现为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());
这产生(如预期):
The BalusC Code