获取IP地址、国家、省份、城市信息
本文最后更新于 47 天前,如有失效请评论区留言。

我们经常可以在网站的右上角看到你所在的一些地理位置信息,比如IP地址、国家、省份、城市。那这些信息是如何获取的呢?今天我来和大家分享一下…

以SpringBoot项目为例,首先我们需要导入一个非常重要的依赖Jsoup,它是什么呢?Jsoup 是一个用于解析、操作 HTML 文档的 Java 库。它提供了简单、灵活和强大的 API,使得在 Java 程序中处理 HTML 数据变得非常方便。

        <!--Jsoup-->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.14.3</version>
        </dependency>

接下来,我们需要从一些在线网站上获取他们的成果,比如https://ip.900cha.com/,打开我们可以发现上面显示着我们的位置信息。

这样的话就容易多了,我们只需要F12分析html元素,之后获取你想要的文本就好了!这里是我的代码供大家参考。

   /**
     * 获取当前IP与地理位置信息
     *
     * @return
     */
    @Override
    public Map ipInfo() {

        Map<String, Object> map = new HashMap<>();
        try {
            Document document = Jsoup.connect("https://ip.900cha.com/").get();
            Elements liList = document.select(".list-unstyled li");
            String ipInfo = liList.eq(3).text().trim();
//            System.out.println("ipInfo: " + ipInfo);
            // 匹配 IP 地址的正则表达式
            String ipRegex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
            // 匹配归属地信息的正则表达式
            String locationRegex = "->\\s*(.*)";
            // 提取 IP 地址
            Pattern ipPattern = Pattern.compile(ipRegex);
            Matcher ipMatcher = ipPattern.matcher(ipInfo);
            String ipAddress = "";
            if (ipMatcher.find()) {
                ipAddress = ipMatcher.group();
            }
            // 提取归属地信息
            Pattern locationPattern = Pattern.compile(locationRegex);
            Matcher locationMatcher = locationPattern.matcher(ipInfo);
            String location = "";
            if (locationMatcher.find()) {
                location = locationMatcher.group(1).trim();
//                System.out.println("location:" + location);
            }
            String[] detailLocations = location.split(" ", 3);
            //组装数据
            map.put("IP",ipAddress);
            map.put("国家",detailLocations[0]);
            map.put("省份",detailLocations[1]);
            map.put("城市",detailLocations[2]);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return map;
    }
}

最后使用PostMan测试请求结果,大家可以自由组装数据。

但是怎么说呢,投机取巧也是有坏处的,比如说网站崩溃了,或者页面元素发生改变就会导致获取不到信息,如果有兄弟有更好的方法获取到地理位置信息,评论区来讨论!

版权声明:除特殊说明,博客文章均为1017498761原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇