Java Jsoup可以模拟按钮按下吗?

Java Jsoup可以模拟按钮按下吗?,java,jsoup,Java,Jsoup,你可以使用Jsoup向谷歌提交搜索,但不要通过“谷歌搜索”发送请求,而是使用“我觉得很幸运”吗?我想捕获将返回的站点的名称 我看到了很多提交表单的例子,但从来没有一种方法可以指定一个特定的按钮来执行搜索或表单提交 如果Jsoup不起作用,怎么办 是的,如果你能弄清楚谷歌搜索查询是如何进行的,它可以。但这是谷歌不允许的,即使你能成功做到这一点。您应该使用他们的官方API进行自动搜索查询 根据“我感到幸运”按钮的HTML源代码,该按钮的名称为btnI: 因此,只需将btnI参数添加到查询字符串中

你可以使用Jsoup向谷歌提交搜索,但不要通过“谷歌搜索”发送请求,而是使用“我觉得很幸运”吗?我想捕获将返回的站点的名称

我看到了很多提交表单的例子,但从来没有一种方法可以指定一个特定的按钮来执行搜索或表单提交


如果Jsoup不起作用,怎么办

是的,如果你能弄清楚谷歌搜索查询是如何进行的,它可以。但这是谷歌不允许的,即使你能成功做到这一点。您应该使用他们的官方API进行自动搜索查询


根据“我感到幸运”按钮的HTML源代码,该按钮的名称为
btnI


因此,只需将
btnI
参数添加到查询字符串中即可(值无关紧要):

因此,这个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());
然而,这给出了一个错误

也许谷歌在嗅探用户代理,发现它是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());
这将产生(如预期的那样):

巴卢斯密码


然而,403标志着谷歌并不一定对这样的机器人感到满意。如果您经常这样做,您可能会(暂时)被IP禁止。

我会尝试使用HtmlUnit在站点中导航,而使用JSOUP进行抓取。

您是指JSONP吗?谷歌的搜索API是@Ceejayoz:将鼠标放在问题下方的
[jsoup]
标记上方,直到弹出框出现,然后单击信息链接中的按钮了解它。@BalusC我认为这是一个足够公平的澄清请求,考虑到问题的内容和所有上限,只需一个字母。@Ceejayoz:同意。Jsoup不应该是全大写的。谢谢您的回复。然而,我只是以谷歌为例。我有一个网站,我正试图使用JSOUP登录并获取一些信息。我想我没有真正登录。我试图找出如何模拟按下“登录”或“提交”按钮,以确保我实际上登录到该网站。抱歉搞混了。谢谢巴卢斯。这完美地回答了这个问题。我知道这个URL请求对于Google的站点来说是独一无二的。我试着以谷歌为例,弄清楚你是否可以通过编程Jsoup来点击一个特定的按钮。我最好澄清一下我在这个网站上的另一个问题中想做什么。这个问题已经一个月没有回答了,我很沮丧,所以问了一个不同的问题,希望它能帮助我解决第一个问题。不幸的是,我的计划适得其反,我很抱歉占用您的时间回答了一个无法解决我问题的问题。那么htmlUnit和jSoup如何结合使用呢?编辑:明白了。。parse可以解析htmlUnit给出的html字符串
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());