使用java代码获取完整的网页
我想实现一个java方法,它将URL作为输入,并将整个网页(包括css、图像、js(所有相关资源))存储在我的磁盘上。我已经使用JSoupHTML解析器来获取html页面。现在我想实现的唯一选项是使用jsoup获取页面,现在解析html内容,将相对路径转换为绝对路径,然后对javascript、图像等发出另一个get请求,并将它们保存在磁盘上。 我也读过关于html cleaner、htmlunit解析器的文章,但我认为在所有这些情况下,我必须解析html内容以获取图像、css和javascript文件 无论我的想法正确与否,我都有任何建议。使用java代码获取完整的网页,java,javascript,html-parsing,jsoup,Java,Javascript,Html Parsing,Jsoup,我想实现一个java方法,它将URL作为输入,并将整个网页(包括css、图像、js(所有相关资源))存储在我的磁盘上。我已经使用JSoupHTML解析器来获取html页面。现在我想实现的唯一选项是使用jsoup获取页面,现在解析html内容,将相对路径转换为绝对路径,然后对javascript、图像等发出另一个get请求,并将它们保存在磁盘上。 我也读过关于html cleaner、htmlunit解析器的文章,但我认为在所有这些情况下,我必须解析html内容以获取图像、css和javascri
或者有什么简单的方法来完成这项任务吗?我在几年前遇到过类似的问题,我们使用了与您计划的完全相同的机制。解析html内容并将相对路径转换为绝对路径,我们还使用多个线程同时运行并检索图像、java脚本等以优化性能。我不知道它是否应该像我们做的那样做,但最终它对我们有用。:-基本上,你可以用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使用Jsoup执行此操作。如果已经存在,则无需再次写入
编辑:我制作了这个类的一个版本,并添加了新功能:
它可以:
- 从链接或内联CSS中提取URL,例如背景图像,并下载并保存它们
- 它对所有文件(图像、脚本等)进行多线程下载
- 提供有关进度和错误的详细信息
- 可以获取嵌入在HTML文档中的HTML框架,也可以获取嵌套框架
- 使用和,所以您需要这些库
- 不管怎么说,GPL已经获得许可了