以下代码试图搜索谷歌,并将结果作为文本或html返回。 代码几乎完全直接从在线代码片段中复制,我认为没有理由不返回搜索结果。如何在没有浏览器的情况下使用htmlunit提交搜索查询返回谷歌搜索结果?
import com.gargoylesoftware.htmlunit.WebClient;
import java.io.*;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import java.net.*;
public class GoogleSearch {
public static void main(String[] args)throws IOException, MalformedURLException
{
final WebClient webClient = new WebClient();
HtmlPage page1 = webClient.getPage("http://www.google.com");
HtmlInput input1 = page1.getElementByName("q");
input1.setValueAttribute("yarn");
HtmlSubmitInput submit1 = page1.getElementByName("btnK");
page1=submit1.click();
System.out.println(page1.asXml());
webClient.closeAllWindows();
}
}
答案 0 :(得分:3)
必须有一些浏览器检测才能更改生成的HTML,因为在使用page1.getWebResponse().getContentAsString()
检查HTML时,提交按钮的名称为btnG
,而不是btnK
(这不是我的在Firefox中观察)。进行此更改,结果将是预期的结果。
答案 1 :(得分:1)
我刚检查过这个。对于2个谷歌页面实际上是2个ID: