Htmlunit使用

import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import com.gargoylesoftware.htmlunit.BrowserVersion;import com.gargoylesoftware.htmlunit.html.HtmlDivision;import com.gargoylesoftware.htmlunit.html.HtmlAnchor;import com.gargoylesoftware.htmlunit.*;import com.gargoylesoftware.htmlunit.WebClientOptions;import com.gargoylesoftware.htmlunit.html.HtmlInput;import com.gargoylesoftware.htmlunit.html.HtmlBody;import java.util.List;public class helloHtmlUnit{    public static void main(String[] args) throws Exception{
        String str;        //创建一个webclient
        WebClient webClient = new WebClient();        //htmlunit 对css和javascript的支持不好,所以请关闭之
        webClient.getOptions().setJavaScriptEnabled(false);
        webClient.getOptions().setCssEnabled(false);        //获取页面
        HtmlPage page = webClient.getPage("http://www.baidu.com/");        //获取页面的TITLE
        str = page.getTitleText();
        System.out.println(str);        //获取页面的XML代码
        str = page.asXml();
        System.out.println(str);        //获取页面的文本
        str = page.asText();
        System.out.println(str);        //关闭webclient        webClient.closeAllWindows();
    }
}

3.2 使用不同版本的浏览器打开

import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import com.gargoylesoftware.htmlunit.BrowserVersion;import com.gargoylesoftware.htmlunit.html.HtmlDivision;import com.gargoylesoftware.htmlunit.html.HtmlAnchor;import com.gargoylesoftware.htmlunit.*;import com.gargoylesoftware.htmlunit.WebClientOptions;import com.gargoylesoftware.htmlunit.html.HtmlInput;import com.gargoylesoftware.htmlunit.html.HtmlBody;import java.util.List;public class helloHtmlUnit{    public static void main(String[] args) throws Exception{
        String str;        //使用FireFox读取网页
        WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);        //htmlunit 对css和javascript的支持不好,所以请关闭之
        webClient.getOptions().setJavaScriptEnabled(false);
        webClient.getOptions().setCssEnabled(false);
        HtmlPage page = webClient.getPage("http://www.baidu.com/");
        str = page.getTitleText();
        System.out.println(str);        //关闭webclient        webClient.closeAllWindows();
    }
}

3.3 找到页面中特定的元素

public class helloHtmlUnit{    public static void main(String[] args) throws Exception{        //创建webclient
        WebClient webClient = new WebClient(BrowserVersion.CHROME);        //htmlunit 对css和javascript的支持不好,所以请关闭之
        webClient.getOptions().setJavaScriptEnabled(false);
        webClient.getOptions().setCssEnabled(false);
        HtmlPage page = (HtmlPage)webClient.getPage("http://www.baidu.com/");        //通过id获得"百度一下"按钮
        HtmlInput btn = (HtmlInput)page.getHtmlElementById("su");
        System.out.println(btn.getDefaultValue());        //关闭webclient        webClient.closeAllWindows();
    }
}

3.4 元素检索

public class helloHtmlUnit{    public static void main(String[] args) throws Exception{        //创建webclient
        WebClient webClient = new WebClient(BrowserVersion.CHROME);        //htmlunit 对css和javascript的支持不好,所以请关闭之
        webClient.getOptions().setJavaScriptEnabled(false);
        webClient.getOptions().setCssEnabled(false);
        HtmlPage page = (HtmlPage)webClient.getPage("http://www.baidu.com/");        //查找所有div
        List<?> hbList = page.getByXPath("//div");
        HtmlDivision hb = (HtmlDivision)hbList.get(0);
        System.out.println(hb.toString());        //查找并获取特定input
        List<?> inputList = page.getByXPath("//input[@id=‘su‘]");
        //List links = (List) page.getByXPath ("//*[@id=\"groups_tab\"]/div[1]/ul/li[1]/a"); 
        HtmlInput input = (HtmlInput)inputList.get(0);
        System.out.println(input.toString());        //关闭webclient        webClient.closeAllWindows();
    }
}

3.5 提交搜索

public class helloHtmlUnit{    public static void main(String[] args) throws Exception{        //创建webclient
        WebClient webClient = new WebClient(BrowserVersion.CHROME);        //htmlunit 对css和javascript的支持不好,所以请关闭之
        webClient.getOptions().setJavaScriptEnabled(false);
        webClient.getOptions().setCssEnabled(false);
        HtmlPage page = (HtmlPage)webClient.getPage("http://www.baidu.com/");        //获取搜索输入框并提交搜索内容
        HtmlInput input = (HtmlInput)page.getHtmlElementById("kw");
        System.out.println(input.toString());
        input.setValueAttribute("雅蠛蝶");
        System.out.println(input.toString());        //获取搜索按钮并点击
        HtmlInput btn = (HtmlInput)page.getHtmlElementById("su");
        HtmlPage page2 = btn.click();        //输出新页面的文本        System.out.println(page2.asText());
    }
}
时间: 2024-10-07 14:18:37

Htmlunit使用的相关文章

htmlunit

htmlunit介绍 htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实现.是一个没有界面的浏览器. Httpclient+jsoup无法解析js加载出来的页面数据,比如百度云用户页面,淘宝页面: htmlunit内嵌js浏览器,模拟Js运行,把结果执行出来,不过相对Httpclient+jsoup速度较慢. 导入依赖 通过maven远程仓库导入htmlunit依赖包 <depen

selenium2支持无界面操作(HtmlUnit和PhantomJs)

selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试的. 其实selenium也是支持无界面浏览器操作的.比如说HtmlUnit和PhantomJs.他们都不是真正的浏览器,运行时不会渲染页面显示内容,但是支持页面元素查找,js的执行等:由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多. 1.htmlUnit是java实现的类浏览器程序,包含在sel

htmlunit教程

最近写爬虫的时候,利用httpclient抓取一些网页出现一些问题,就是抓取回来的内容都含有大量的加密文本(通过javascript脚本),无法获得真实的内容(也就是用浏览器打开网页呈现的内容).所以,一般需要配合js引擎来解决这个问题,搜索了下,发现htmlunit这个工具就可以帮忙.了解和使用过程中,发现这是一个非常牛逼的开源工具,虽然名气比httpclient小,但是实力绝对不容小觑. 闲话少说.目前htmlunit的最新版本是2.14,可以从这里下载:http://sourceforge

HtmlUnit 网络爬虫 菜鸟的学习笔记(三)

上一篇写到,要是分析每一个url,包括滚动条滚动的url和分页的url就可以构造出来url来访问,从而抓取信息,但是这样要是想把我关注的人的所有微博全部输出的话,岂不是每个关注的人的url都要去看和分析,这样工作量就很大了 所以今天刚我就仔细分析了一下的url,发现其实变化量除了page和pagebar这两个参数,还有其他的参数需要关注: 该人的主页id,domain和id,下面说明一下 给一个分页的url参考一下 http://weibo.com/u/1645851277?pids=Pl_Of

[转载]爬虫的自我解剖(抓取网页HtmlUnit)

网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源HtmlUnit包,4行代码就OK啦,例子如下: 1 2 3 4 final WebClient webClient=new WebClient(); final HtmlPage page=webClient.getPage("http://www.yanyulin.info"); System.out.println(page.asText()); webClient.closeAllWindo

htmlunit 导致高cup占用的坑

原文:http://blog.csdn.net/qq_28384353/article/details/52974432#reply 将爬虫部署到服务器上运行后,在查看服务器的状态监控时发现,天猫爬虫执行一段时间后,CPU占用异常升高,内存也跟着爆炸,虽然程序没有中断,但是爬取速度已经变成龟速.查看日志,发现抛出了Java.lang.OutOfMemoryError: Javaheap space异常. 在服务器上通过jstack查到占用CPU最严重的五个线程里有四个竟然都是htmlunit下的

java htmlunit 抓取网页数据

WebClient webClient=new WebClient(BrowserVersion.CHROME); webClient.setJavaScriptTimeout(5000); webClient.getOptions().setUseInsecureSSL(true); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.

HtmlUnit、httpclient、jsoup爬取网页信息并解析

HtmlUnit(底层也是采用httpclient)和jsoup  API package com.yuanhai.test; import java.io.IOException; import java.net.MalformedURLException; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; i

利用htmlunit登陆带验证码图片的网站

http://htsoft.org/html/y2011/822_using-htmlunit-landing-site-with-captcha-image.html 利用htmlunit登陆带验证码图片的网站 2011年09月15日 ⁄ 编程语言 ⁄ 共 1266字 ⁄ 字号 小 中 大 ⁄ 暂无评论 ⁄ 阅读 7,088 次 以百度统计为例,说明下如何用htmlunit登陆带验证码的网站 //baidu统计登陆代码 try { WebClient client = new WebClien

(二)HtmlUnit 使用

第一节: htmlunit 模拟浏览器请求 第二节: htmlunit 获取指定元素 第三节: htmlunit 使用代理 IP 第四节: htmlunit 取消 css,javascript 支持 第五节: htmlunit 模拟按钮点击