加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 可以Jsoup模拟按钮按下吗?

发布时间:2020-12-14 05:08:01 所属栏目:Java 来源:网络整理
导读:您可以使用Jsoup向Google提交搜索,但不是通过“Google搜索”发送您的请求,而是使用“我感觉到幸运”?我想捕获将被返回的网站的名称. 我看到很多提交表单的例子,但从来没有一种方法来指定一个特定的按钮来执行搜索或表单提交. 如果Jsoup不行,那会怎样? 解决
您可以使用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

然而,403表明Google不一定对这样的机器人感到满意.当您经常这样做时,您可能会暂时(IP)禁止IP.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读