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

从Instagram标签获取数据时json_decode返回NULL问题求助

问题分析与解决方案

兄弟,你这代码的问题一眼就能看出来——你直接把URL字符串传给json_decode()了!这个函数的作用是解析JSON格式的文本内容,不是帮你请求URL并获取数据的,所以它自然会返回NULL。

正确的实现步骤

要获取Instagram标签页的JSON数据并解析,得分成两步走:

  1. 先向目标URL发送请求,获取返回的JSON文本内容
  2. 再把拿到的JSON文本传给json_decode()解析

示例代码(用file_get_contents实现)

// 目标URL
$url = "https://www.instagram.com/explore/tags/selfie/?__a=1";

// 设置请求上下文,模拟浏览器请求(避免被Instagram拦截)
$context = stream_context_create([
    'http' => [
        'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36\r\n"
    ]
]);

// 获取URL返回的内容
$jsonContent = file_get_contents($url, false, $context);

// 检查是否成功获取内容
if ($jsonContent === false) {
    die("无法获取目标URL的内容");
}

// 解析JSON数据
$obj = json_decode($jsonContent, true);

// 检查解析是否成功
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解析失败: " . json_last_error_msg());
}

// 输出解析结果
var_dump($obj);

备选方案(如果file_get_contents被禁用,用curl实现)

有些服务器会禁用file_get_contents的HTTP请求功能,这时候可以用curl替代:

$url = "https://www.instagram.com/explore/tags/selfie/?__a=1";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");

$jsonContent = curl_exec($ch);
curl_close($ch);

if ($jsonContent === false) {
    die("CURL请求失败");
}

$obj = json_decode($jsonContent, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解析失败: " . json_last_error_msg());
}

var_dump($obj);

额外注意事项

  • Instagram有反爬机制,如果你频繁请求可能会被限制,建议添加请求间隔或者使用代理
  • 这个__a=1的API接口是Instagram的非公开接口,随时可能被官方修改或关闭,后续如果失效可能需要寻找替代方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:54:21