You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android中使用Jsoup获取Instagram指定用户的粉丝数量

失效原因

  • 无请求头的直接请求会被Instagram反爬机制拦截,返回登录提示页而非真实用户主页数据
  • 原代码使用的doc.select("-nal3")是无效的类选择器(类选择器需加.前缀),且Instagram目前已采用前端动态渲染逻辑,粉丝数不会直接暴露在静态DOM标签中,而是内嵌在页面script标签的JSON数据里

可行实现方案

实现思路:模拟浏览器请求头拉取用户主页源码,提取内嵌的用户数据JSON,解析得到粉丝数字段。
你需要先引入JSON解析依赖,比如Android环境可引入org.json:json:20230227版本。
实现代码如下:

private void getInstaFollowers() {
    new Thread(() -> {
        StringBuilder builder = new StringBuilder();
        String targetUser = "zuck"; // 替换为要查询的用户名
        String webLink = "https://www.instagram.com/" + targetUser + "/";
        try {
            // 配置请求头模拟Chrome浏览器请求
            Document doc = Jsoup.connect(webLink)
                    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
                    .header("Accept-Language", "en-US,en;q=0.9")
                    .get();
            
            // 提取包含用户数据的script标签内容
            Elements scriptElements = doc.select("script");
            String userDataJson = "";
            for (int i = 0; i < scriptElements.size(); i++) {
                String scriptContent = scriptElements.get(i).html();
                if (scriptContent.contains("window._sharedData")) {
                    // 截取JSON部分
                    int start = scriptContent.indexOf("{");
                    int end = scriptContent.lastIndexOf("}") + 1;
                    userDataJson = scriptContent.substring(start, end);
                    break;
                }
            }
            
            if (!userDataJson.isEmpty()) {
                // 解析JSON获取粉丝数
                org.json.JSONObject rootJson = new org.json.JSONObject(userDataJson);
                org.json.JSONObject userObj = rootJson.getJSONObject("entry_data")
                        .getJSONArray("ProfilePage")
                        .getJSONObject(0)
                        .getJSONObject("graphql")
                        .getJSONObject("user");
                long followerCount = userObj.getJSONObject("edge_followed_by").getLong("count");
                builder.append("用户").append(targetUser).append("的粉丝数:").append(followerCount);
            } else {
                builder.append("未获取到用户数据");
            }

        } catch (Exception e) {
            builder.append("Error : ").append(e.getMessage());
        }

        runOnUiThread(() -> {
            Toast.makeText(mContext, builder.toString(), Toast.LENGTH_LONG).show();
        });
    }).start();
}

注意事项

  • 该方案仅可查询公开账号的粉丝数,私有账号无法获取对应数据
  • 频繁请求会触发Instagram反爬限制,会出现要求登录或IP封禁的情况,生产环境建议使用Instagram官方Graph API实现
  • Instagram可能随时调整前端JSON结构,若字段解析失败可重新从页面script标签中查找对应粉丝数字段的路径

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:06:08