Java Jsoup抓取符合指定大小的网页的图片,并保存在本地磁盘

首先需要加入 jsoup-1.8.1 这个jar包。

     /**
     * 获取指定HTML 文档指定的body
     */
    private Map<String, String> BolgBody(String url) throws IOException {

        Map<String, String> resultMap = new HashMap<String, String>();
        // 直接从字符串中输入 HTML 文档
        // 从 URL 直接加载 HTML 文档
        Document doc2 = Jsoup.connect(url).get();

        // 抓取网页的标题
        Elements links = doc2.getElementsByTag("title");
        for (Element link : links) {
            String linkText = link.text();
            if (linkText != null) {
                resultMap.put("title", linkText);
            }
        }

        // 抓取网页的图片
        Elements pngs = doc2.select("img[src$=.png],[src$=.jpg]");
        List<String> images = new ArrayList<String>();
        if (pngs != null) {
            for (Element element : pngs) {
                System.out.println(element.toString());
                String m = element.attr("src");
                System.out.println(m);

                // 这里主要判断是否存在http这个开头,如果不存在判断图片尺寸的方法可能会报错,所以要加上(百度首页没有)
                Boolean s = m.contains("http");
                if (s == false) {
                    m = "http:" + m;
                }
                System.out.println(s);
                images.add(m);
            }

        }

        List<String> srcList = getImgSize(images, 300, 300);
        System.out.println(srcList.toString());

        if (srcList != null) {
            for (String src : srcList) {
                resultMap.put("src", src);
            }
        }
        return resultMap;
    }

根据src判断图片的尺寸是否符合要求,返回符合要求的src路径的集合。

/**
     * 获取指定范围内的图片
     * 
     * @param list
     * @return
     */
    public List<String> getImgSize(List<String> list, Integer width, Integer height) {
        BufferedImage sourceImg = null;
        List<String> srclist = new ArrayList<String>();
        try {
            if (null != list && list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    String src = list.get(i);
                    URL url = new URL(src);
                    // 根据url获取BufferImage对象
                    sourceImg = ImageIO.read(url);

                    // 获取图片的宽度和高度
                    Integer w = Integer.valueOf(sourceImg.getWidth());
                    Integer h = Integer.valueOf(sourceImg.getHeight());
                    System.out.println("图片宽:" + w + "\n图片高:" + h);
                    if (w > width && h > height) {
                        srclist.add(src);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return srclist;
    }


根据指定src路径下载图片

    /**
     * 根据路径下载图片
     * 
     * @param urlString
     *            图片地址
     * @param filename
     *            名称
     * @param savePath
     *            保存地址
     * @throws Exception
     */
    public void download(String urlString, String filename, String savePath) throws Exception {

        // 构造url
        URL url = new URL(urlString);
        // 打开连接
        URLConnection conn = url.openConnection();

        conn.setConnectTimeout(5 * 1000);
        InputStream inputStream = conn.getInputStream();
        byte[] sb = new byte[1024];
        int len;
        File file = new File(savePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        OutputStream os = new FileOutputStream(file.getPath() + "\\" + filename);

        while ((len = inputStream.read(sb)) != -1) {
            os.write(sb, 0, len);
        }
        os.close();
        inputStream.close();
    }
/**
     * 获取后缀
     * 
     * @param fileUrl
     * @return
     */
    public String getExtension(String fileUrl) {
        return fileUrl.substring(fileUrl.lastIndexOf("."), fileUrl.length());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲向梦想的天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值