1. 程式人生 > >HttpUnit模擬按鈕點選以及爬蟲實現

HttpUnit模擬按鈕點選以及爬蟲實現

HttpUnit 簡介

HttpUnit 本質上相當於一個後臺的透明的瀏覽器引擎,使用java中的HttpUnit可以實現模擬點選按鈕,抓取網頁元素,實現動態爬蟲,之前一直使用jsoup進行爬蟲,不過這次爬取一個生物論壇時候,需要動態處理,發現了httpUnit這個好的框架。

HttpUnit demo

1.幾行程式碼實現獲取網頁原始碼。

final WebClient webClient=new WebClient();
final HtmlPage page=webClient.getPage("http://www.baidu.com");
System.out.println
(page.asText()); //asText()是以文字格式顯示 System.out.println(page.asXml()); //asXml()是以xml格式顯示 webClient.closeAllWindows();

2.模擬文字框與模擬按鈕提交,下面我們模擬實現模擬百度搜索關鍵字。

// 得到瀏覽器物件,直接New一個就能得到,現在就好比說你得到了一個瀏覽器了  
    WebClient webclient = new WebClient();  

    // 這裡是配置一下不載入css和javaScript,因為httpunit對javascript相容性不太好
webclient.getOptions().setCssEnabled(false); webclient.getOptions().setJavaScriptEnabled(false); // 做的第一件事,去拿到這個網頁,只需要呼叫getPage這個方法即可 HtmlPage htmlpage = webclient.getPage("http://baidu.com"); // 根據名字得到一個表單,檢視上面這個網頁的原始碼可以發現表單的名字叫“f” final HtmlForm form = htmlpage.getFormByName("f"
); // 同樣道理,獲取”百度一下“這個按鈕 final HtmlSubmitInput button = form.getInputByValue("百度一下"); // 得到搜尋框 final HtmlTextInput textField = form.getInputByName("q1"); //搜尋我的id textField.setValueAttribute("th是個小屁孩"); // 輸入好了,我們點一下這個按鈕 final HtmlPage nextPage = button.click(); // 我把結果轉成String String result = nextPage.asXml(); System.out.println(result); //得到的是點選後的網頁

感覺httpunit比httpclient好像簡單了不少,以後java爬蟲可以多試試這個框架,裡面還有好多提取節點的方法可以直接呼叫,但是好像對div的class無法提取節點,不過可以根據id抓取節點,唉,不知道如果div沒寫id的網站怎麼抓取,好像沒有提供這樣的方法可以根據class抓取,有知道的同學可以給點點子。