使用HtmlUnit搜索谷歌

时间:2011-10-24 20:56:50

标签: htmlunit

以下代码试图搜索谷歌,并将结果作为文本或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();
      }
    } 

2 个答案:

答案 0 :(得分:3)

必须有一些浏览器检测才能更改生成的HTML,因为在使用page1.getWebResponse().getContentAsString()检查HTML时,提交按钮的名称为btnG,而不是btnK(这不是我的在Firefox中观察)。进行此更改,结果将是预期的结果。

答案 1 :(得分:1)

我刚检查过这个。对于2个谷歌页面实际上是2个ID:

  • btnK:在google主页上(屏幕中间有一个长文本框)。这次按钮的id ='gbqfa'
  • btnG:在google结果页面上(主文本框位于屏幕顶部)。这次按钮的id ='gbqfb'