htmlunit 简单使用
程序员文章站
2022-05-05 12:32:38
...
遇到问题
- 通过一个链接,
http://s.click.taobao.com/t?e=m%3D2%26s%3DycajciJS87scQipKwQzePOeEDrYVVa64K7Vc7tFgwiG3bLqV5UHdqQukrx%2FmbH%2BPr8hK%2FDw%2Bbm0Tu%2BCoerkS%2Bdae792E8im8JRidYwYAT8f6NyJljMLbzHqG2ztm0vQp9TBV5jXLK10xPzRvFNtn38MBMDPQIFVh2EIH6jzSrcBxKmPmpIKZsA%3D%3D&unid=D2V41LKCAPc , 返回一个200 的页面,通过触发页面的 js 代码拼接跳转地址,进行两次302 跳转后才到达所需页面, 要抓取最后那个页面的url地址 - 解决方案
- 用 httpclient,因为之返回了200,不能触发后面的跳转,最后得到的地址是200的那个地址 —— 失败
- 用 jsoup,不能执行 js —— 失败
- 用 htmlunit, 可以执行 js —— 成功
htmlunit 使用
- 请求 web 页面
WebClient webClient = new WebClient();
// 启动 js 解释器
webClient.getOptions().setJavaScriptEnabled(true);
// 禁用 css 支持
webClient.getOptions().setCssEnabled(false);
HtmlPage page = weClient.getPage("http://www.baidu.com");
- 解析获取的响应文本
// 以 xml 的形式获取响应文本
String pageXml = page.asXml();
// 以 文本 的形式获取响应文本
String pageText = page.asText();
// 获取当前 Url (跳转后的最终Url)
String url = page.getUrl();
关于关闭警告日志和异常日志
- 关掉所有警告日志和异常日志
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
上一篇: Redis的那些事儿
下一篇: htmlunit使用