当前位置:懂科普 >

IT科技

> java htmlunit

java htmlunit

<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"));        });    }}

标签: java htmlunit
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/43q9pe.html