網站首頁 學習教育 IT科技 金融知識 旅遊規劃 生活小知識 家鄉美食 養生小知識 健身運動 美容百科 遊戲知識 綜合知識
當前位置:趣知科普吧 > IT科技 > 

htmlunit|java

欄目: IT科技 / 發佈於: / 人氣:2.83W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java htmlunit是什麼,讓我們一起了解一下?

htmlunit是一款開源的java頁面分析工具,讀取頁面後,可以有效的使用htmlunit分析頁面上的內容。項目可以模擬瀏覽器執行,被譽爲java瀏覽器的開源實現,是一個沒有介面的瀏覽器,執行速度迅速。

htmlunit的主要用途是什麼?

常規意義上,該項目可以用來進行頁面的測試工作,實現網頁自動化測試,(包括JS)

但是一般來說,在小型爬蟲項目中,這種框架十分常用,可以有效的分析出 dom的標籤,並且有效的執行頁面上的js以便得到一些需要執行JS才能得到的值。

java htmlunit

HtmlUnit使用方法是什麼?

1、新建maven工程,添加HtmlUnit依賴:

            net.sourceforge.htmlunit        htmlunit        2.27

2、新建一個Junit TestCase來嘗試一下程序庫的使用。

程序代碼註釋如下:

package xuyihao.util.depend;import com.gargoylesoftware.htmlunit.BrowserVersion;import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;import com.gargoylesoftware.htmlunit.webClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.junit.Test;import java.util.List;/** * Created by xuyh at 2017/11/6 14:03. */public class HtmlUtilTest {    @Test    public void test() {        final WebClient webClient = new WebClient(BrowserVersion.CHROME);//新建一個模擬谷歌Chrome瀏覽器的瀏覽器客戶端對象        webClient.getOptions().setThrowExceptionOnScriptError(false);//當JS執行出錯的時候是否拋出異常, 這裏選擇不需要        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//當HTTP的狀態非200時是否拋出異常, 這裏選擇不需要        webClient.getOptions().setActiveXNative(false);        webClient.getOptions().setCssEnabled(false);//是否啓用CSS, 因爲不需要展現頁面, 所以不需要啓用        webClient.getOptions().setJavaScriptEnabled(true); //很重要,啓用JS        webClient.setAjaxController(new NicelyResynchronizingAjaxController());//很重要,設定支援AJAX        HtmlPage page = null;        try {            page = webClient.getPage("http://ent.sina.com.cn/film/");//嘗試加載上面圖片例子給出的網頁        } catch (Exception e) {            e.printStackTrace();        }finally {            webClient.close();        }        webClient.waitForBackgroundJavaScript(30000);//異步JS執行需要耗時,所以這裏線程要阻塞30秒,等待異步JS執行結束        String pageXml = page.asXml();//直接將加載完成的頁面轉換成xml格式的字元串        //TODO 下面的代碼就是對字元串的操作了,常規的爬蟲操作,用到了比較好用的Jsoup庫        Document document = Jsoup.parse(pageXml);//獲取html文檔        List infoListEle = document.getElementById("feedCardContent").getElementsByAttributeValue("class", "feed-card-item");//獲取元素節點等        infoListEle.forEach(element -> {            System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").text());            System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").attr("href"));        });    }}

Tags:htmlunit java