栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java获取网站页面的favicon图标,顶栏的小图标

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java获取网站页面的favicon图标,顶栏的小图标

 

目录

前言 

一、引入依赖

二、写demo 

三、访问效果 

总结 


前言 

有时候我们可能想获取页面的某些内容,就比如我,需要获取页面的favicon小图标,但是一个个手动去获取太麻烦了,想着能不能试试使用Java解决,一开始我想使用正则表达式来进行匹配处理,但是发现各各网站的路径格式不一样,匹配起来比较麻烦,后面我就发现了jsoup,这是一款Java的HTML解释器,我们可以像使用jquery的方式来使用它,方便便捷!下面给大伙献丑了~

一、引入依赖

首先我们需要引入 jsoup的依赖,这个是重点,另外的hutool是一个工具包,一个很全面的工具包,可以了解下,你会爱上它的!



    org.jsoup
    jsoup
    1.14.3




    cn.hutool
    hutool-all
    4.5.15

二、写demo 

代码已提供,代码上也有相关的注释,因为每个网站的格式可能会不一样,做了一些你看起来可能多余的处理,这是我测试了多个网站之后改善出来的结果,你可以试着让它更加完善,也希望你能向我提出来,我也想知道更好的方案!

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.io.IOException;

public class TestClass {

    public static void main(String[] args) {
        String faviconUrl = getContentTest("https://sgdygb.blog.csdn.net/");
        System.out.println("faviconUrl = " + faviconUrl);
    }

    public static String getContentTest(String str) {
        try {
            // 去掉多余部分,保留域名部分
            int i = StrUtil.indexOf(str, '/', StrUtil.indexOf(str, '.'));
            String url = StrUtil.sub(str, 0, i);

            // 假设输入的参数不携带协议,则拼接协议
            if (!isHttpOrHttps(url)) {
                url = StrUtil.format("https://{}", url);
            }

            // 发请求
            Document document = Jsoup.connect(url).get();
            // 筛选包含favicon图标的link标签
            Elements title = document.select("link[type=image/x-icon]");
            title = ObjectUtil.isEmpty(title)? document.select("link[rel$=icon]"):title;
            // 获取favicon路径
            String href = title.attr("href");
            // 假设获取到的favicon路径已经包含了域名,则直接返回
            if (isHttpOrHttps(href) && StrUtil.containsAny(href,"favicon")) {
                return href;
            }
            // 拼接favicon的访问链接
            return StrUtil.format("{}/{}",url , StrUtil.removePrefix(href, "/"));
        } catch (IOException i) {
            i.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
            return "链接无法识别";
        }
        return "";
    }

    
    public static boolean isHttpOrHttps(String url) {
        String lowerCaseStr = url.toLowerCase();
        return lowerCaseStr.startsWith("http:") || lowerCaseStr.startsWith("https:");
    }
}

打印结果:

faviconUrl = https://g.csdnimg.cn/static/logo/favicon32.ico 

三、访问效果 

让我们来查看一下测试的效果:

总结 

写在最后,如果有不明白的地方欢迎评论区导论,也许你的问题解决了别人的疑问呢?

点赞,你的认可是我创作的动力 !
收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号