Jsoup爬虫工具实现背景图片爬取

Jsoup爬虫工具实现背景图片爬取

soup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

复制代码之前准备工作

首先要将需要的jar包复制到WEB-INF>>lib下面
需要下载的Jsoup.jar包以及其使用的具体操作文档下载地址 [点击下载]

代码块

亲测:1366x768大小的可以下载三千多张壁纸,具体需要下载多大的,提供了选择 自己选择。具体

package com.test.test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.UUID;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Frametest {
     public static void main(String[] args) throws IOException {
        Document firstPage =Jsoup.connect("http://desk.zol.com.cn").get();
        Elements fenleiUrl=firstPage.select("div.wrapper>div.main>dl.first>dd.brand-sel-box>a");
    //System.out.println(fenleiUrl);
    for(int i=1;i<fenleiUrl.size();i++){
        String fenleiUrlS="http://desk.zol.com.cn"+fenleiUrl.get(i).attr("href");
        Document fenleiPage =Jsoup.connect(fenleiUrlS).get();
        Elements  fel=fenleiPage.select("ul.pic-list2>li.photo-list-padding>a");//每个分类对应的标签
        System.err.println(fenleiUrlS);
        //System.out.println(fel);
        for(int j=0;j<fel.size();j++){
            String fenleihou="http://desk.zol.com.cn"+fel.get(j).attr("href");
            System.out.println(fenleihou);
            Document doc=Jsoup.connect(fenleihou).get();
            Elements a=doc.select("div.wrapper>div.photo-set-list>div.photo-list-inner>div.photo-list-box>ul>li>a[href]");
            for(int k=0;k<a.size();k++){
            String  aUrl=a.get(k).attr("href");
            //System.out.println(aUrl);
            Document doc2=Jsoup.connect("http://desk.zol.com.cn"+aUrl).get();

            try {
                Element imgUrl=doc2.getElementById("1366x768");//自行选择壁纸大小 :1440x900 1366x768 1280x1024 1280x800 1024x768
                String imgUrlDown=imgUrl.attr("href");
                Document doc3=Jsoup.connect("http://desk.zol.com.cn"+imgUrlDown).get();
                String imgLastUrl=doc3.select("img").get(0).attr("src");
                System.err.println(imgLastUrl);
                //根据String形式创建一个URL对象,
                   URL url = new URL(imgLastUrl);
                   //实列一个URLconnection对象,用来读取和写入此 URL 引用的资源
                   URLConnection con = url.openConnection();
                   //获取一个输入流
                   InputStream is = con.getInputStream();
                   //实列一个输出对象
                   String filename="f:/img/"+UUID.randomUUID().toString()+".jpg";//图片保存的路径以及图片名字,名字及用UUID生成
                   FileOutputStream fos = new FileOutputStream(filename);
                   //一个byte[]数组,一次读取多个字节
                   byte[] bt = new byte[200];
                   //用来接收每次读取的字节个数
                   int b = 0;

                   //循环判断,如果读取的个数b为空了,则is.read()方法返回-1,具体请参考InputStream的read();
                   while ((b = is.read(bt)) != -1) {
                    //将对象写入到对应的文件中
                    fos.write(bt, 0, b);   
                   }
                   //刷新流
                   fos.flush();
                   //关闭流
                   fos.close();
                   is.close();
            } catch (Exception e) {
                System.err.println("图片路径不可以");
              }
            }

        }
    }
     }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Jsoup 来进行爬虫爬取文件。以下是一个示例代码,展示了如何使用 Jsoup 进行文件的爬取: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.BufferedInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; public class FileSpider { public static void main(String[] args) throws IOException { String fileUrl = "https://example.com/example.pdf"; // 文件的URL地址 String savePath = "path/to/save/file.pdf"; // 文件保存的路径 // 使用 Jsoup 发起 HTTP 请求并获取文件的输入流 Document doc = Jsoup.connect(fileUrl).ignoreContentType(true).get(); InputStream inputStream = new URL(fileUrl).openStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); // 创建文件输出流,并将输入流的内容保存到文件 FileOutputStream fileOutputStream = new FileOutputStream(savePath); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = bufferedInputStream.read(buffer, 0, 1024)) != -1) { fileOutputStream.write(buffer, 0, bytesRead); } // 关闭流 fileOutputStream.close(); bufferedInputStream.close(); inputStream.close(); System.out.println("文件下载完成!"); } } ``` 请注意替换代码中的 `fileUrl` 和 `savePath` 为你要爬取文件的URL地址和要保存的文件路径。这个示例适用于下载 PDF 文件,你也可以根据需要修改代码来下载其他类型的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值