使用 java 代码获取完整的网页
Fetch complete web page using java code
我想实现一个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许可,无论如何,目前
。
- 从脚本中的动态(javascript)网页获取信息
- 从谷歌chrome中的任何网页获取所有tel标签
- 从网页获取数据的更好方法,而不是使用DOM和HTML元素
- 如何从其他网页获取图像并在我的网站上显示
- 我可以通过Javascript从另一个网页获取特定的页面HTML代码吗?
- 从 asp.net c# 中的网页获取所有数据(包括图像)
- 使用 IPv6 地址和 JavaScript 从网页获取 HTML
- 使用 PHP 从网页获取脚本内容
- 使用 javascript 从 uiwebview 的网页获取值
- 如何从网页获取源代码
- 如何通过javascript或jquery从网页获取所有Html
- Javascript 从外部网页获取文本
- 无法从网页获取表单
- 如何使用网页加载的源从网页获取文本框内容
- 如何从Javascript中的通用网页获取favicon的URL
- 从网页获取链接
- 如何使用 AJAX 从外部网页获取未命名的元素
- SeleniumjSoup从Javascript网页获取数据
- 使用ajax而不是使用带有curl的php文件从另一个网页获取响应
- 如何使用selenium从网页获取链接