广州市网站设计公司企业网站开发期末报告

张小明 2026/1/9 14:42:18
广州市网站设计公司,企业网站开发期末报告,上海恒鑫网站建设,电子商务平台的发展趋势前言在互联网软件开发的世界里#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进行投诉反馈,一经查实,立即删除!

网站建设标准 方案书视频网站做app

无需高端显卡!Wan2.2-T2V-5B让普通开发者也能玩转AI视频生成 在短视频内容爆炸式增长的今天,一个创意从灵感到落地的速度,往往决定了它能否抓住流量窗口。但对大多数独立开发者和小型团队来说,AI驱动的视频生成技术一直像是“别人…

张小明 2026/1/7 22:56:18 网站建设

墨刀做网站网站的动画效果代码

Wan2.2-T2V-A14B助力非遗技艺数字化传承与推广 你有没有想过,一位年过七旬的紫砂壶老匠人,手把手教你揉泥、拍打、修边、雕刻——哪怕他远在千里之外? 或者,一段失传已久的皮影戏操作手法,被AI“复原”成高清动态视频&…

张小明 2026/1/7 22:56:21 网站建设

网站被抄袭怎么办wordpress 主题采集

数据可视化管理界面的设计与工具应用 一、数据可视化的前期准备与图表选择 在设计自定义界面和仪表盘之前,了解什么是好的数据可视化以及什么不是至关重要。有很多方法会让数据可视化出错,而正确的方法却很少。建议阅读 Edward Tufte 的《The Visual Display of Quantitati…

张小明 2026/1/7 22:56:19 网站建设

游戏推广网站制作如何看织梦做的网站的源码

Dify如何让AI真正“看懂”印象派绘画? 在数字艺术内容爆炸式增长的今天,用户不再满足于看到一幅画作的基本信息:“这是莫奈的《睡莲》,创作于1906年。”他们更想听到的是:“这幅画中颤动的水面不是靠写实描绘出来的&am…

张小明 2026/1/7 22:56:20 网站建设

做优惠券的网站有哪些站长工具seo综合查询广告

前言学习一个类,我们首先需要了解这个类的大致作用是什么,就好像我们知道Random是为了生成随机数的的一个类,又或者Date类和日期相关。之后我们要去看他的成员以及构造器,了解我们可以如何根据自己的需求,通过构造器如…

张小明 2026/1/7 22:56:23 网站建设

广州第一网站泉州制作网站软件

【万字指南】Web安全从入门到实战:零基础到高手的完整成长路径本文基于8年Web安全实战经验,系统梳理从零基础到能够独立完成企业级渗透测试的完整学习路径。涵盖技术体系、实战方法、工具使用、职业发展,为你提供可落地的行动方案。&#x1f…

张小明 2026/1/7 22:56:21 网站建设