Java爬虫图片如何下载保存
1.简介
网络爬虫是一种通过自动化程序从互联网上获取信息的技术。Java作为一种广泛使用的编程语言,也提供了许多库和框架来编写和运行爬虫程序,例如,jsoup、tika等。在爬虫网页内容时,经常会遇到需要保存图片得到情况。本文将介绍如何使用Java爬虫将图片保存到本地计算机。
2.流程图
下面是爬虫程序的流程图

3.Java代码实现
3.1获取图片链接
在爬取网页内容之前,首先需要确定图片的链接。可以使用网络爬虫程序获取网页的HTML源代码,然后通过正则表达式或HTML解析库提取图片的链接。
以下是使用Jsoup库解析HTML源代码并获取图片链接的示例代码(本例子以https://soso.nipic.com网站为例):
1.首先创建maven工程,在pom.xml中引入jsoup依赖
<!-- 解析网页jsoup--> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.2</version> </dependency>
2.代码实package com.example.pachong.utils;
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.*; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.Objects; public class HtmlParseUtil { public static void main(String[] args) throws IOException { //搜索图片关键字 String keyword = URLEncoder.encode("二十四节气", StandardCharsets.UTF_8); pachong("https://soso.nipic.com/?q="+keyword); } public static void pachong(String url) throws IOException { //解析网页(document对象) Document document = Jsoup.parse(new URL(url),30000); //判断是否存在下一页 Element pageElement = document.getElementsByClass("common-page-box").first(); //获取所有的a元素 Element aElement = pageElement.getElementsByTag("a").last(); if (Objects.equals(aElement.attr("title"), "下一页")){ String nextPage = "https://soso.nipic.com" + aElement.attr("href"); System.out.println(nextPage); pachong(nextPage); } //开始爬数据 Element element = document.getElementById("img-list-outer"); //获取所有的li元素 Elements elements = element.getElementsByTag("li"); //获取元素中的内容 int i = 0; for (Element el : elements){ String title = el.getElementsByClass("search-works-thumb").eq(0).attr("title"); String img = el.getElementsByTag("img").eq(0).attr("data-original"); //将图片保存到本地 downloadAndSaveImageFromUrl(img); String score = el.getElementsByClass("search-works-price").eq(0).text().substring(4); System.out.println("============================"); System.out.println(img); System.out.println(title); System.out.println(score); } }
public static void downloadAndSaveImageFromUrl(String imgUrl){ String url = "https:" + imgUrl; try (InputStream in = new URL(url).openStream()) { Path outputPath = Path.of("f:\\爬虫图片\\"+imgUrl); Files.copy(in,outputPath, StandardCopyOption.REPLACE_EXISTING); System.out.println("successfully"); }catch (Exception e){ e.printStackTrace(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!