HtmlUnit的學習筆記


 

 官方網址:http://htmlunit.sourceforge.net/

 有時候你需要模擬瀏覽器,HtmlUnit 就是個不錯的選擇

 像 網頁中js 中的內容,如果你想用爬蟲爬取的話,用Jsoup 就不怎么行了,但是HtmlUnit 就是個不錯的選擇

 (1) HtmlUnit模擬表單提交

  下面的代碼是模擬在百度里搜索 "root"  得到的page2 就是百度搜索"root" 的結果

package com.xinsearch;

import java.io.IOException;
import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;

public class Test {
    public static void main(String[] args) {
    
        try {
            WebClient client=new WebClient(BrowserVersion.FIREFOX_10);
            HtmlPage page=client.getPage("http://www.baidu.com/");
            HtmlForm form = page.getFormByName("f");
            HtmlTextInput text= form.getInputByName("wd");
            HtmlSubmitInput submit = form.getInputByValue("百度一下");
            text.setValueAttribute("root");
            HtmlPage page2=submit.click();
            System.out.println(page2.asXml());
            
            
            
            
        } catch (FailingHttpStatusCodeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
}

結果就不列出了
(2) 得到元素的方法有很多 下面寫的是根據 Attribute 的方法 

  List<HtmlElement> body=page.getDocumentElement().getElementsByAttribute("div", "class", "item");

  

    try {
        WebClient webClient=new WebClient(BrowserVersion.FIREFOX_10);
        //這一步是創建一個模擬瀏覽器,使用瀏覽器版本為FIREFOX10.0,可以更改,如果
        //使用這個瀏覽器不能解決問題的時候,可以更換CHROME or IE
                URL url;
                
                    url = new URL("http://www.baidu.com");
            
        //創建一個url連接
                HtmlPage page = webClient.getPage(url);
        //使用模擬瀏覽器對這個鏈接發送請求
        HtmlInput input=(HtmlInput)page.getDocumentElement().getElementsByAttribute("input", "id",     "kw").get(0);
        //獲取輸入框
                input.setAttribute("value", "哪兒買");
        //然后設置輸入框的屬性值
                HtmlInput active=(HtmlInput) page.getDocumentElement().getElementsByAttribute("input","id","su").get(0);
        //獲取你需要操縱的那個按鈕
                HtmlPage result=active.click();
        //然后觸發按鈕上綁定的javascript事件,得到一個新的頁面,這個頁面就是從服務器//響應得到的
                System.out.println(result.asXml());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM