java爬虫 htmlunit与jsoup技术
程序员文章站
2022-03-02 21:09:01
...
场景使用:网页爬虫,一个网页数据抓取工具。
htmlunit可以模拟浏览器执行,但是不会正真打开一个浏览器界面,是webdriver的轻量级实现。
优点:比webDriver运行快,少占用资源。
缺点:对js,css的支持不是很好,需要处理。
使用方法
首先加载htmlunit对应的jar包
a. 对应下载:htmluint-2.23.jar(也可以下载最新版的)-
处理js,css,重定向
private void initClient() { this.webClient = new WebClient(); this.webClient.setAjaxController(new NicelyResynchronizingAjaxController()); // 启动JS this.webClient.getOptions().setJavaScriptEnabled(true); // this.webClient.waitForBackgroundJavaScript(10000); this.webClient.waitForBackgroundJavaScriptStartingBefore(10000); // 禁用Css,可避免自动二次请求CSS进行渲染 this.webClient.getOptions().setCssEnabled(false); // 启动客户端重定向 this.webClient.getOptions().setRedirectEnabled(true); // js运行错误时,是否抛出异常 this.webClient.getOptions().setThrowExceptionOnScriptError(false); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
注意:getpage的时候一定要剖析浏览器的请求方式(post或者get,不同的请求对应不同的处理方式,getpage对应的是get请求)
-
获取网页源码
HtmlPage indexPage =webclient.getPage(dataUrl)//网页链接
- 1
-
解析
a.直接利用htmlunit进行解析//id获取<input>text元素 HtmlInput inputName = indexPage.getHtmlElementById("id"); //id获取button元素 HtmlSubmitInput btn = indexPage.getHtmlElementById("button"); //xpath获取<a>标签元素 HtmlAnchor link = (HtmlAnchor) indexPage.getByXPath("xpath");
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
注意:xpath方法用的比较广泛,可以唯一定位一个html元素。更多解析方式见官方api文档:http://htmlunit.sourceforge.net/table-howto.html
//htmlunit还可以模拟键盘动作,例如回车 indexPage.pressAccessKey((char) 10);
- 1
- 2
//解析表格 HtmlTable table = indexPage.getHtmlElementById("tableId"); for (HtmlTableBody body : table.getBodies()) { for (HtmlTableRow row : body.getRows()) { for (final HtmlTableCell cell : row.getCells()) { //TODO 表格数据 System.out.println(cell.asText()); } } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
b.解析方式亦可以换成熟悉的jsoup
//需要转换比较费时 String html= indexPage.asXml(); Document doc= Jsoup.parse(html); //通过id Element element= doc.getElementById("elementId"); //更多解析方式看jsoup官方api ...
推荐阅读
-
荐 Java——数据库编程JDBC之数据库连接池技术(C3P0与Druid,提供了Druid的工具类)
-
Java使用JDK与Cglib动态代理技术统一管理日志记录
-
Java开源生鲜电商平台-技术方案与文档下载(源码可下载)
-
Java 实现 HttpClients+jsoup,Jsoup,htmlunit,Headless Chrome 爬虫抓取数据
-
java爬虫Jsoup简单学习
-
Java爬虫--利用HttpClient和Jsoup爬取博客数据并存入数据库
-
Java Web实用开发技术-文件的上传与下载
-
Java爬虫系列三:使用Jsoup解析HTML
-
Java 开发( I/O与Netty相关技术原理分析总结)
-
Java网页抓取技术HtmlUnit