当前位置: 首页 > 知识库问答 >
问题:

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

郑曜灿
2023-03-14

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

我的想法是否正确,有什么建议吗?或者有什么简单的方法来完成这项任务??

共有3个答案

晏经武
2023-03-14

这个GitHub项目就是这样做的,使用的是jSoup。如果已经存在就不用再写了!

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

它可以:

>

  • 从链接或内联CSS中提取URL,例如背景图像,并下载

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

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

    可以获得嵌入在HTML文档中的HTML框架,以及嵌套框架。

    一些注意事项:

    > < li>

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

    GPL许可,至少目前是这样。

  • 邢和光
    2023-03-14

    我在几年前遇到过类似的问题,我们使用了和你计划的完全一样的机制。解析html内容,将相对路径转换为绝对路径,我们还使用了多线程来同时运行和检索图像,java脚本等性能优化。我不知道它是否应该像我们所做的那样,但最终它对我们有用。:-)

    楚宏胜
    2023-03-14

    基本上,你可以用J汤做到这一点:

     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

     类似资料:
    • 问题内容: 我想实现一个Java方法,该方法以URL作为输入并将整个网页(包括CSS,图像,JS(所有相关资源))存储在磁盘上。我已经使用Jsoup html解析器来获取html页面。现在,我想实现的唯一选择是使用jsoup获取页面,现在解析html内容并将相对路径转换为绝对路径,然后再次请求获取javascript,图像等并将其保存在磁盘上。我还阅读了有关HTML清洁器,htmlunit解析器的

    • 问题内容: 如何使用Selenium WebDriver 拍摄整个网页的屏幕快照( 全屏屏幕截图 ),而不仅仅是部分( 从上到下 )? 我的代码: ( Java绑定 ) 关于如何解决这个问题的任何想法? 问题答案: LE: 我看到很多人都对整页的截图感兴趣,所以我想我可能会用一些肯定的答案( 银色子弹 )来更新答案。 有很多Web测试框架可以( 只需最少的设置和工作 )即可生成 整页的屏幕截图 。

    • 我正在刮网页使用JSoup库通过选择类属性,其中包含"nav"字符串。 这是获取网站超文本标记语言的代码: 正如您所看到的,id=“varPreviewMenu”的ul元素包含Jsoup检索到的HTML不包含的li元素。 我怎样才能得到那些元素?

    • 问题内容: 假设有人输入这样的网址: 我想返回: 不 这是我现在拥有的代码 但这又回来了 问题答案: 检查下面的代码,它应该做的很好。

    • 以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Windows 操作系统、移动设备和游戏系统。 var client = function() { //呈现引擎 var engine = {ie: 0,gecko: 0,webkit: 0,khtml: 0,opera: 0,//完整的版本号ver: null }; //浏览器 var browser = {//主要浏览器ie: 0,f

    • <?php $http = HttpRequest::newSession(); $response = $http->get('http://www.baidu.com/'); $content = $response->body(); // 网页源码