Java爬虫图片如何下载保存

发布时间 2023-12-10 00:21:55作者: 哥几个佛
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(); } } }