java使用htmlunit爬取百度搜索資訊
阿新 • • 發佈:2018-12-18
在maven專案裡新增所需的開源包,這裡我使用2.23版本
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.23</version>
</dependency>
public static String Baidu(String keyword)throws Exception{
WebClient webclient = new WebClient();
//ssl認證
//webclient.getOptions().setUseInsecureSSL(true);
//由於有的網頁js書寫不規範htmlunit會報錯,所以去除這種錯誤讓程式執行完全(不影響結果)
webclient.getOptions().setThrowExceptionOnScriptError(false);
webclient.getOptions().setThrowExceptionOnFailingStatusCode(false);
//不載入css
webclient.getOptions().setCssEnabled(false);
//由於是動態網頁所以一定要載入js及執行
webclient.getOptions().setJavaScriptEnabled(true);
//開啟百度高階搜尋的網址
HtmlPage htmlpage = webclient.getPage("http://www.baidu.com/gaoji/advanced.html");
//獲取網頁from控制元件(f1為控制元件name)
HtmlForm form = htmlpage.getFormByName("f1");
HtmlSubmitInput button = form.getInputByValue("百度一下");
HtmlTextInput textField = form.getInputByName("q1");
textField.setValueAttribute(keyword);
final HtmlSelect htmlSelet=form.getSelectByName("rn");
htmlSelet.setDefaultValue("10");
//隱藏值
final HtmlHiddenInput hiddenInputtn = form.getInputByName("tn");
hiddenInputtn.setDefaultValue("baiduadv");
//傳送請求(相當於點選百度一下按鈕)獲取返回後的網頁
final HtmlPage page = button.click();
//獲取網頁的文字資訊
String result = page.asText();
//獲取網頁原始碼
//String result = page.asXml();
//System.out.println(result);
webclient.close();
return result;
}