郑州cms建站模板站长收录

张小明 2026/1/12 15:36:39
郑州cms建站模板,站长收录,免费咨询法律律师在线劳动仲裁,做贸易要看什么网站前言在互联网软件开发的世界里#xff0c;我们常常会面临各种有趣且富有挑战性的任务。其中#xff0c;从网络爬取图片资源并将其下载到本地进行存储#xff0c;是一个在许多项目中都会涉及到的功能#xff0c;比如图片素材收集、网站内容备份、数据可视化辅助等场景。今天…前言在互联网软件开发的世界里我们常常会面临各种有趣且富有挑战性的任务。其中从网络爬取图片资源并将其下载到本地进行存储是一个在许多项目中都会涉及到的功能比如图片素材收集、网站内容备份、数据可视化辅助等场景。今天我们就深入探讨一下如何在 Spring Boot3 的框架下实现这一功能。准备工作在 Spring Boot 项目中我们通过 Maven 或者 Gradle 来管理项目的依赖。对于实现图片爬取和下载功能我们需要引入一些关键的依赖。Http 请求依赖为了能够从网络获取图片资源我们需要一个强大的 Http 客户端。在 Java 世界里有许多优秀的选择比如Apache HttpClient或者OkHttp。在 Spring Boot 项目中我们可以通过 Maven 引入spring-boot-starter-web依赖它已经集成了HttpComponentsClientHttpRequestFactory能方便地进行 Http 请求操作。在pom.xml文件中添加如下依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency文件处理依赖下载后的图片需要保存到本地这就涉及到文件的输入输出操作。Spring Boot 本身提供了对文件处理的支持我们无需额外引入复杂的依赖。但如果我们想要更方便地处理文件路径、文件名等操作可以引入commons-io库。在pom.xml中添加dependency groupIdcommons-io/groupId artifactIdcommons-io/artifactId version2.11.0/version /dependencyHTML 解析依赖如果需要从网页中提取图片链接如果我们的任务不仅仅是简单地根据已知的图片链接下载图片而是要从网页中提取图片链接那么就需要一个 HTML 解析库。Jsoup是一个非常受欢迎的 Java HTML 解析器它能帮助我们轻松地解析 HTML 文档定位到我们需要的图片标签并获取其链接。在pom.xml中引入Jsoup依赖dependency groupIdorg.jsoup/groupId artifactIdjsoup/artifactId version1.16.1/version /dependency实现图片下载功能使用 HttpURLConnection 下载图片在 Java 中HttpURLConnection是一个标准的用于发送 Http 请求的类我们可以利用它来实现图片的下载。以下是一个简单的示例代码import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.net.HttpURLConnection; import java.net.URL; public class ImageDownloader { public void downloadImage(String fileUrl, String localPath, String fileName) { try { URL url new URL(fileUrl); HttpURLConnection connection (HttpURLConnection) url.openConnection(); connection.setRequestMethod(GET); connection.setConnectTimeout(10 * 1000); // 设置连接超时时间为10秒 DataInputStream in new DataInputStream(connection.getInputStream()); File file new File(localPath); if (!file.exists()) { file.mkdirs(); } FileOutputStream fileOutputStream new FileOutputStream(new File(file File.separator fileName)); DataOutputStream out new DataOutputStream(fileOutputStream); byte[] buffer new byte[1024]; int length; while ((length in.read(buffer)) ! -1) { out.write(buffer, 0, length); } out.close(); in.close(); connection.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }在上述代码中我们首先创建了一个URL对象然后通过openConnection方法获取到HttpURLConnection对象。设置好请求方法和连接超时时间后我们从连接中获取输入流用于读取图片数据。同时我们创建了本地文件的输出流将从网络读取到的图片数据写入到本地文件中。最后记得关闭所有的流和连接以释放资源。使用Apache HttpClient下载图片Apache HttpClient是一个功能更强大、更灵活的 Http 客户端在 Spring Boot 项目中也很容易使用。首先确保已经引入了spring-boot-starter-web依赖因为它包含了Apache HttpClient的相关支持。以下是使用Apache HttpClient下载图片的示例代码import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class ApacheImageDownloader { public void downloadImage(String fileUrl, String localPath, String fileName) { CloseableHttpClient httpClient HttpClients.createDefault(); HttpGet httpGet new HttpGet(fileUrl); try { HttpResponse response httpClient.execute(httpGet); if (response.getStatusLine().getStatusCode() 200) { File file new File(localPath); if (!file.exists()) { file.mkdirs(); } OutputStream outputStream new FileOutputStream(new File(file File.separator fileName)); EntityUtils.writeTo(response.getEntity(), outputStream); outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } }在这段代码中我们首先创建了一个CloseableHttpClient实例然后构建了一个HttpGet请求对象指定要下载的图片链接。执行请求后检查响应状态码如果是 200表示请求成功此时将响应实体中的数据写入到本地文件中。最后关闭HttpClient以释放资源。从网页中爬取图片链接使用Jsoup解析 HTML 获取图片链接如果我们需要从网页中提取图片链接Jsoup是一个很好的工具。假设我们有一个网页其中包含了许多图片我们想要提取这些图片的链接然后下载这些图片。以下是使用Jsoup解析 HTML 并获取图片链接的示例代码import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ImageLinkExtractor { public ListString extractImageLinks(String url) { ListString imageLinks new ArrayList(); try { Document doc Jsoup.connect(url).get(); Elements imgElements doc.select(img); for (Element imgElement : imgElements) { String imgUrl imgElement.attr(src); if (!imgUrl.isEmpty()) { imageLinks.add(imgUrl); } } } catch (IOException e) { e.printStackTrace(); } return imageLinks; } }在上述代码中我们使用Jsoup.connect(url).get()方法连接到指定的网页并获取其Document对象。然后通过doc.select(img)方法选择所有的img标签遍历这些标签提取其src属性的值也就是图片的链接。将这些链接添加到一个列表中并返回。处理相对链接在从网页中提取图片链接时我们可能会遇到相对链接的情况。相对链接是相对于当前网页的路径而不是完整的 URL。为了能够正确下载图片我们需要将相对链接转换为绝对链接。Jsoup提供了方便的方法来处理这种情况。以下是修改后的代码用于处理相对链接import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; public class ImageLinkExtractor { public ListString extractImageLinks(String url) { ListString imageLinks new ArrayList(); try { Document doc Jsoup.connect(url).get(); Elements imgElements doc.select(img); for (Element imgElement : imgElements) { String imgUrl imgElement.attr(src); if (!imgUrl.isEmpty()) { try { URL absoluteUrl new URL(new URL(url), imgUrl); imageLinks.add(absoluteUrl.toString()); } catch (MalformedURLException e) { e.printStackTrace(); } } } } catch (IOException e) { e.printStackTrace(); } return imageLinks; } }在这段代码中我们通过new URL(new URL(url), imgUrl)构造函数将相对链接转换为绝对链接。这样无论图片链接是绝对链接还是相对链接我们都能正确地处理并下载图片。整合到 Spring Boot 应用中创建 Spring Boot 项目首先我们可以使用 Spring Initializrhttps://start.spring.io/来快速创建一个 Spring Boot 项目。在 Spring Initializr 页面中选择合适的项目元数据如项目名称、包名等并添加Spring Web依赖。下载生成的项目压缩包解压后导入到我们的 IDE 中。创建服务类在项目中创建一个服务类用于封装图片下载和链接提取的功能。例如我们创建一个ImageService类import org.springframework.stereotype.Service; import java.io.File; import java.util.List; Service public class ImageService { private final ImageDownloader imageDownloader; private final ImageLinkExtractor imageLinkExtractor; public ImageService(ImageDownloader imageDownloader, ImageLinkExtractor imageLinkExtractor) { this.imageDownloader imageDownloader; this.imageLinkExtractor imageLinkExtractor; } public void downloadImagesFromWebpage(String webpageUrl, String localPath) { ListString imageLinks imageLinkExtractor.extractImageLinks(webpageUrl); for (String imageLink : imageLinks) { String fileName imageLink.substring(imageLink.lastIndexOf(/) 1); imageDownloader.downloadImage(imageLink, localPath, fileName); } } }在上述代码中ImageService依赖于ImageDownloader和ImageLinkExtractor。downloadImagesFromWebpage方法首先从指定的网页中提取图片链接然后遍历这些链接逐个下载图片到指定的本地路径。创建控制器可选如果我们希望通过 HTTP 接口来触发图片下载操作可以创建一个控制器类。例如创建一个ImageController类import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; RestController public class ImageController { private final ImageService imageService; public ImageController(ImageService imageService) { this.imageService imageService; } GetMapping(/downloadImages) public String downloadImages(RequestParam String webpageUrl, RequestParam String localPath) { imageService.downloadImagesFromWebpage(webpageUrl, localPath); return Images downloaded successfully!; } }在这个控制器中我们定义了一个/downloadImages接口接收webpageUrl和localPath两个参数调用ImageService的downloadImagesFromWebpage方法来执行图片下载操作并返回下载成功的消息。注意事项网络请求的异常处理在进行网络请求时可能会遇到各种异常情况如网络超时、连接失败、服务器响应错误等。我们需要在代码中妥善处理这些异常以提供更好的用户体验和系统稳定性。例如在前面的下载图片代码中我们使用了try-catch块来捕获可能出现的异常并进行相应的处理如打印异常堆栈信息或者向用户返回友好的错误提示。资源的释放在进行文件输入输出和网络连接操作时一定要注意及时释放资源。例如在下载图片的代码中我们在使用完输入流、输出流和网络连接后都通过close方法关闭了这些资源避免资源泄漏导致系统性能下降甚至出现内存溢出等问题。合法性检查在从网页中提取图片链接和下载图片时我们需要对链接的合法性进行检查。确保链接指向的是一个有效的图片资源避免下载无效或者恶意的文件。同时也要检查本地路径是否合法确保有足够的权限在指定路径下创建文件和目录。反爬虫机制许多网站为了保护自身的资源和数据安全设置了反爬虫机制。在进行图片爬取时我们需要注意遵守网站的使用条款避免对网站造成过大的负载影响正常用户的使用。一些常见的反爬虫机制包括 IP 封禁、验证码验证等。我们可以通过设置合理的请求头、控制请求频率等方式来尽量模拟真实用户的行为避免触发反爬虫机制。通过以上步骤和方法我们就可以在 Spring Boot3 项目中实现从网络爬取图片资源并下载到本地存储的功能了。希望这篇文章能对广大互联网软件开发人员有所帮助在实际项目中顺利实现相关功能。在不断探索和实践的过程中你可能还会遇到更多有趣的挑战和优化点期待大家能在这个领域不断创新和进步。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

海口企业做网站设计代理公司注册服务

JuiceFS符号链接故障终极排查指南:5种实战解决方案 【免费下载链接】juicefs JuiceFS 是一个高性能的分布式文件系统,适用于大规模数据处理、机器学习、容器和对象存储等场景。* 提供高性能的分布式文件系统;支持多种云存储和对象存储&#x…

张小明 2025/12/27 8:41:39 网站建设

地方旅游网站开发品牌推广公司简介

视觉AI提示词设计:从困惑到精通的实战指南 【免费下载链接】awesome-prompts 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-prompts 你是否曾经面对AI视觉模型感到束手无策?明明图像清晰可见,模型却给出令人啼笑皆非的…

张小明 2025/12/27 12:27:31 网站建设

怎么做类似知乎的网站wordpress全自动淘宝客

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/9 23:28:13 网站建设

网络科技网站福田建设大型网站建设公司好吗

第一章:VSCode量子编程环境搭建概述 在当前量子计算快速发展的背景下,开发者需要一个高效、灵活且可扩展的开发环境来编写和调试量子程序。Visual Studio Code(VSCode)凭借其强大的插件生态和轻量级架构,成为构建量子编…

张小明 2025/12/27 13:40:42 网站建设

英文网站建设方案 ppt模板厦门网站设计多少钱

还在为无法离线观看AcFun精彩视频而烦恼吗?AcFunDown作为一款功能强大的免费视频下载工具,能够帮助用户轻松实现A站视频批量下载、多格式支持、断点续传等实用功能,彻底告别网络限制! 【免费下载链接】AcFunDown 包含PC端UI界面的…

张小明 2025/12/27 13:40:40 网站建设

网站建设内容规划表西安工业设计公司

第一章:Open-AutoGLM 数据脱敏规则定制在构建企业级大模型应用时,数据安全与隐私保护是不可忽视的核心环节。Open-AutoGLM 提供了一套灵活可扩展的数据脱敏机制,支持用户根据业务场景自定义脱敏规则,确保敏感信息在模型训练与推理…

张小明 2026/1/3 2:35:48 网站建设