抓取网页数据工具(开源java页面分析工具模拟js运行java浏览器 )

优采云 发布时间: 2021-11-19 01:05

  抓取网页数据工具(开源java页面分析工具模拟js运行java浏览器

)

  htmlunit 是一个开源的 java 页面分析工具。阅读完页面后,您可以有效地使用htmlunit 来分析页面上的内容。该项目可以模拟浏览器操作,被称为java浏览器的开源实现。这个没有界面的浏览器也非常快。使用 Rhinojs 引擎。模拟js操作。

  说白了就是浏览器。该浏览器是用 Java 编写的无界面浏览器。因为没有接口,所以执行速度还是会下降的。 HtmlUnit 提供了一系列 API。这些API可以做的功能很多,比如表单填写、表单提交、模拟点击链接等。由于内置Rhinojs引擎,可以执行Javascript。

  网页获取和解析速度更快,性能更好。推荐用于需要解析网页脚本的应用场景。

  使用本工具前,需要导入htmlunit所需的jar包:

  

  代码:

  public static String url="http://www.XXX.cn/XXX";//抓取数据的地址

public static void main(String[] args) throws IOException, SAXException

{

WebClient wc = new WebClient(BrowserVersion.FIREFOX_52);

wc.getOptions().setJavaScriptEnabled(true); //启用JS解释器,默认为true

wc.setJavaScriptTimeout(100000);//设置JS执行的超时时间

wc.getOptions().setCssEnabled(false); //禁用css支持

wc.getOptions().setThrowExceptionOnScriptError(false); //js运行错误时,是否抛出异常

wc.getOptions().setTimeout(10000); //设置连接超时时间 ,这里是10S。如果为0,则无限期等待

wc.setAjaxController(new NicelyResynchronizingAjaxController());//设置支持AJAX

wc.setWebConnection(new WebConnectionWrapper(wc) {

public WebResponse getResponse(WebRequest request) throws IOException {

WebResponse response = super.getResponse(request);

String data= response.getContentAsString();

if (data.contains("{\"js中的数据标识\"")){//判断抓到的js数据是否是包含抓取的字段

System.out.println(data);

writeFile(data);//将js中获取的数据写入指定路径的txt文件中

}

return response;

}

}

);

HtmlPage page = wc.getPage(url);

System.out.println("page:" + page);

try {

Thread.sleep(1000);//设置

} catch (InterruptedException e) {

e.printStackTrace();

}

//关闭webclient

wc.close();

}

/**

* 写入TXT文件

*/

public static void writeFile(String data) {

try {

File writeName = new File("data.txt"); // 相对路径,如果没有则要建立一个新的output.txt文件

writeName.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖

try{

          FileWriter writer = new FileWriter(writeName);

          BufferedWriter out = new BufferedWriter(writer);

out.write(data);

out.flush(); // 把缓存区内容压入文件

}

} catch (IOException e) {

e.printStackTrace();

}

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线