1. 程式人生 > >java使用htmlunit爬取百度搜索資訊

java使用htmlunit爬取百度搜索資訊

在maven專案裡新增所需的開源包,這裡我使用2.23版本

   
  1. <dependency>   
  2.         <groupId>net.sourceforge.htmlunit</groupId>  
  3.         <artifactId>htmlunit</artifactId>  
  4.         <version>2.23</version>  
  5. </dependency>
htmlunit的基本設定,實現百度高階搜尋:

   
  1. public static String Baidu(String keyword)throws Exception{
  2. WebClient webclient = new WebClient();
  3.        //ssl認證
  4. //webclient.getOptions().setUseInsecureSSL(true);
  5.        //由於有的網頁js書寫不規範htmlunit會報錯,所以去除這種錯誤讓程式執行完全(不影響結果)
  6. webclient.getOptions().setThrowExceptionOnScriptError(false);
  7. webclient.getOptions().setThrowExceptionOnFailingStatusCode(false);
  8.        //不載入css
  9. webclient.getOptions().setCssEnabled(false);
  10.        //由於是動態網頁所以一定要載入js及執行
  11. webclient.getOptions().setJavaScriptEnabled(true);
  12. //開啟百度高階搜尋的網址
  13. HtmlPage htmlpage = webclient.getPage("http://www.baidu.com/gaoji/advanced.html");
  14.        //獲取網頁from控制元件(f1為控制元件name)
  15. HtmlForm form = htmlpage.getFormByName("f1");
  16. HtmlSubmitInput button = form.getInputByValue("百度一下");
  17. HtmlTextInput textField = form.getInputByName("q1");
  18. textField.setValueAttribute(keyword);
  19. final HtmlSelect htmlSelet=form.getSelectByName("rn");
  20. htmlSelet.setDefaultValue("10");
  21. //隱藏值
  22. final HtmlHiddenInput hiddenInputtn = form.getInputByName("tn");
  23. hiddenInputtn.setDefaultValue("baiduadv");
  24.       //傳送請求(相當於點選百度一下按鈕)獲取返回後的網頁
  25. final HtmlPage page = button.click();
  26.       //獲取網頁的文字資訊
  27. String result = page.asText();
  28.       //獲取網頁原始碼
  29.       //String result = page.asXml();
  30. //System.out.println(result);
  31. webclient.close();
  32. return result;
  33. }
程式所對應的網頁原始碼: