java使用htmlunit爬取百度搜索信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15144655/article/details/53419788
在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. }
程序所对应的网页源码:
 

猜你喜欢

转载自blog.csdn.net/qq_15144655/article/details/53419788