使用 java 代码获取完整的网页

Fetch complete web page using java code

本文关键字:网页 获取 java 代码 使用      更新时间:2023-09-26

我想实现一个java方法,该方法将URL作为输入并将整个网页(包括css,图像,js(所有相关资源)存储在我的磁盘上。我使用Jsoup html解析器来获取html页面。现在我正在考虑实现的唯一选择是使用 jsoup 获取页面,现在解析 html 内容并将相对路径转换为绝对路径,然后对 javascript、图像等发出另一个 get 请求并将它们保存在磁盘上。我也读过关于html清理器,htmlunit解析器的信息,但我认为在所有这些情况下,我都必须解析html内容来获取图像,css和javascript文件。

任何建议,无论我的想法是否正确。或者有什么简单的方法可以完成这项任务吗?

基本上,你可以用Jsoup来做:

 Document doc = Jsoup.connect("http://rabotalux.com.ua/vacancy/4f4f800c8bc1597dc6fc7aff").get();
         Elements links = doc.select("link");
         Elements scripts = doc.select("script");
        for (Element element : links) {
              System.out.println(element.absUrl("href"));
        }
        for (Element element : scripts) {
              System.out.println(element.absUrl("src"));
        }

依此类推,包括图像和所有相关资源。

但是如果你的网站用javaScript创建了一些元素,Jsoup会跳过它,因为它不能执行javaScript。

几年前,我遇到了类似的问题,我们使用了与您正在规划的完全相同的机制。 解析HTML内容并将相对路径转换为绝对路径,我们还使用多个线程同时运行并检索图像,Java脚本等以进行性能优化。我不知道它应该像我们所做的那样做,但最终它对我们有用。

这个GitHub项目使用jSoup来做到这一点。如果它已经存在,则无需再次编写!

编辑:我制作了此类的改进版本,并添加了新功能:

它可以:

  • 从链接或内联CSS中提取URL,例如用于背景图像,并下载并保存这些URL。

  • 它对所有文件(图像、脚本等)进行多线程下载。

  • 提供有关进度和错误的详细信息。

  • 可以在 HTML 文档中嵌入 HTML 框架,也可以获取嵌套框架。

一些注意事项:

  • 使用 JSoup 和 OkHttp,因此您需要拥有这些库。

  • GPL许可,无论如何,目前