需求:
需要采集js渲染的页面,有些网站的页面是js渲染的
实现:
基于HtmlUnit实现:
public static void getAjaxPage() throws Exception{ WebClient webClient = new WebClient(); webClient.setJavaScriptEnabled(true); webClient.setCssEnabled(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.setTimeout(Integer.MAX_VALUE); webClient.setThrowExceptionOnScriptError(false); HtmlPage rootPage = webClient.getPage("http://tt.mop.com/read_14304066_1_0.html"); System.out.println(rootPage.asXml()); }
maven依赖:
<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit-core-js</artifactId> <version>2.9</version> <scope>compile</scope> </dependency> <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.9</version> <scope>compile</scope> </dependency>
说明:
Nutch插件:nutch-htmlunit用于替换Nutch自身的Http Fetch组件
相关推荐
4. **执行JavaScript**:在页面加载后,你可以使用`executeJavaScript`方法执行任意JavaScript代码。这个方法返回一个`JavaScriptResult`对象,可以通过`asText`或`asDomNodeList`方法获取结果。 ```java String ...
高效的java爬虫,内附代码 sql数据表 ,main方法启动。...避免了jsoup无法抓取js代码生成的数据内容的弊端。避免了client无法一次性获取大量信息的弊端。有能获取静态页面形成之前的对方数据内容的高手 欢迎借阅指导
1. **模拟浏览器行为**:HtmlUnit可以加载整个页面,包括执行JavaScript,使得它能够处理那些依赖JavaScript动态加载内容的网站。 2. **DOM操作**:它提供了对HTML文档对象模型(DOM)的访问,允许开发者通过CSS选择...
3. **JavaScript支持**:由于HTML页面经常涉及JavaScript,HTMLUnit内嵌了 Rhino 或 Nashorn JavaScript引擎来处理页面上的脚本。 4. **HTTP客户端库**:可能包含Apache HttpClient或其他类似的库,用于处理网络...
HTMLUnit的核心是基于Jakarta HtmlUnit,这是一个高度可配置的Web客户端模拟器,能够执行JavaScript,解析和渲染HTML页面。它提供了对HTTP协议的支持,包括GET和POST请求,并能够处理cookies和其他会话管理功能。这...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和抓取。这个库的核心功能是能够解析、渲染和执行JavaScript,从而使得开发者可以在没有实际浏览器环境的情况下,对网页进行功能测试...
HTMLUnit是一款功能强大的Java库,它模拟了一个无头Web浏览器,...它简化了网页爬虫的编写,尤其是在处理需要JavaScript渲染的动态网页时。通过理解并正确配置其依赖,你可以有效地利用HTMLUnit进行各种自动化任务。
7. **htmlunit-core-js-2.8.jar**:这是HTMLUnit的核心组件,包含了JavaScript引擎,使得HTMLUnit能够执行网页中的JavaScript代码,从而动态地加载和渲染页面。 8. **commons-logging-1.1.1.jar**:Apache Commons ...
1. **网页渲染**:HTMLUnit可以解析和执行HTML、CSS以及JavaScript代码,模拟浏览器的行为,包括页面加载、DOM构建和脚本执行。 2. **网络通信**:通过内建的HTTP客户端,HTMLUnit能够发起HTTP请求,处理响应,并...
HtmlUnit 是一个强大的Java库,它模拟了一个无头Web浏览器,允许开发者进行自动化测试和网页抓取。在HtmlUnit 2.8版本中,你可以利用它来执行JavaScript、处理Ajax请求,以及与网页上的各种元素交互,而无需实际运行...
1. **JavaScript支持**:尽管大多数静态HTML解析器不处理JavaScript,但HtmlUnit可以执行页面上的JavaScript代码,这使得它能处理动态生成的内容。 2. **无头模式**:由于不需要图形界面,HtmlUnit可以在服务器环境...
- **JavaScript支持**:HTMLUnit内建了 Rhino JavaScript 引擎,可以执行页面中的JavaScript代码,这对于测试网页动态行为至关重要。 - **Ajax支持**:HTMLUnit能够处理异步请求,模拟用户触发的Ajax事件,使...
3. **网页渲染**:虽然不提供图形渲染,但它能理解和处理CSS样式,帮助解析页面结构。 4. **异步处理**:支持AJAX请求,可等待异步操作完成后再继续执行其他脚本。 5. **快速高效**:由于不需要图形界面,HtmlUnit比...
- htmlunit-core-js.jar:HTMLUnit的JavaScript引擎部分,用于解析和执行页面上的JavaScript代码。 - 其他可能的依赖库:这些库文件可能包含了HTMLUnit运行时所需的额外依赖,如HttpClient库用于网络通信,或者XML...
- **数据抓取**:HTMLUnit可以用于爬虫程序,特别是那些需要处理JavaScript动态内容的网站。 - **性能测试**:在无GUI环境下,HTMLUnit可以帮助评估网站的性能,例如页面加载速度。 操作HTMLUnit的基本步骤如下: ...
使用HTMLUnit,开发者可以构建高效的网络爬虫,特别是在需要处理JavaScript渲染的网页时。此外,由于HTMLUnit运行时不需要完整浏览器环境,所以其速度比使用真实浏览器进行网页抓取快得多,同时资源消耗也相对较小。...
`htmlunit-core-js-2.23.jar`包含了HTMLUnit的核心JavaScript引擎,它是基于Rhino和Nashorn JavaScript引擎的。Rhino是Mozilla的一个开源项目,能够使JavaScript在Java环境中运行。Nashorn是Java 8引入的,提供更快...
还有其他高级话题,如处理JavaScript渲染的页面(可能需要使用如Selenium这样的工具)、反爬虫策略(如设置代理、User-Agent、延迟请求等)、数据存储(如CSV、数据库)以及多线程抓取以提高效率。 在压缩包文件...
2. **JavaScript支持**:HtmlUnit能执行JavaScript代码,这对于那些依赖JavaScript渲染的网页特别有用。 3. **网络模拟**:它可以发送HTTP请求,处理响应,模拟Cookie和其他HTTP头部信息。 4. **页面交互**:点击...
3. **JavaScript支持**:HTMLUnit内置了Rhino JavaScript引擎,允许它执行网页中的JavaScript代码,这对于动态网页的渲染至关重要。 4. **异常处理**:源码中会有各种异常类,用于捕获和处理在模拟浏览器操作时可能...