从网站下载图像并显示文件大小的 Java 程序

标签 java html html-parsing image htmlunit

我正在创建一个 java 程序,它将从 URL 读取 html 文档并在代码中显示图像的大小。不过,我不确定如何着手实现这一目标。

我不需要实际下载和保存图像,我只需要它们在网页上显示的大小和顺序。

例如: 一个网页有 3 张图片

<img src="dog.jpg" /> //which is 54kb
<img src="cat.jpg" /> //which is 75kb
<img src="horse.jpg"/> //which is 80kb

我需要显示我的 java 程序的输出

54kb
75kb
80kb

有什么我应该从哪里开始的想法吗?

p.s 我是个java新手

最佳答案

如果您是 Java 的新手,您可能希望利用现有的库来简化操作。 Jsoup允许您获取 HTML 页面并使用 CSS 样式的选择器提取元素。

这只是一个快速且非常肮脏的示例,但我认为它将显示 Jsoup 可以轻松完成这样的任务。请注意,错误处理和响应代码处理被省略了,我只是想传递总体思路:

Document doc = Jsoup.connect("http://stackoverflow.com/questions/14541740/java-program-to-download-images-from-a-website-and-display-the-file-sizes").get();

Elements imgElements = doc.select("img[src]");
Map<String, String> fileSizeMap = new HashMap<String, String>();

for(Element imgElement : imgElements){
    String imgUrlString = imgElement.attr("abs:src");
    URL imgURL = new URL(imgUrlString);
    HttpURLConnection httpConnection = (HttpURLConnection) imgURL.openConnection();
    String contentLengthString = httpConnection.getHeaderField("Content-Length");
    if(contentLengthString == null)
        contentLengthString = "Unknown";

    fileSizeMap.put(imgUrlString, contentLengthString);
}

for(Map.Entry<String, String> mapEntry : fileSizeMap.entrySet()){
    String imgFileName = mapEntry.getKey();
    System.out.println(imgFileName + " ---> " + mapEntry.getValue() + " bytes");
}

您也可以考虑查看 Apache HttpClient .我发现它通常优于原始 URLConnection/HttpURLConnection 方法。

关于从网站下载图像并显示文件大小的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541740/

相关文章:

c# - 如何像 c# 中的 html 解析器一样解析 asp.net mvc razor view (cshtml)

python - 如何在维基百科页面中抓取一页的多个表格?

java - 从另一个应用程序启动 Java 应用程序

java - 如何在泛型方法中获取枚举类?

javascript - 在html5 Canvas 内制作重力效果

javascript - 淡出/int 背景图像只有根 div - jQuery/js

尝试解析具有 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"实体的文档时出现 java.net.MalformedURLException

java - 代理之间的确认消息

java - 分配延迟似乎很高,为什么?

PHP DOMDocument 如何得到这个标签的内容?