使用Curl从PHP中的URL检索JSON内容的问题

时间:2014-12-20 23:50:22

标签: php json curl

我试图从此url检索价格值。

我在Firefox中查看price元素时可以看到内容,而且似乎是在使用json。这就是我在php中尝试使用curl的方法。

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_HEADER, 1,
    CURLOPT_URL => 'https://www.speedway.com/Pages/GasPriceSearch.aspx?lat=40.4172871&lng=-82.90712300000001&st=ohio'
]);

$resp = curl_exec($curl);
curl_close($curl);
var_dump(json_decode($resp));

我总是从NULL得到的结果是,我似乎并没有得到任何json内容作为回报。

我尝试过设置一个使用者并且没有改变任何东西。我也认为服务器可能阻止我接收我想要的东西。我尝试添加

$http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

并输出结果,但我得到200,所以我也不认为这是一个问题。如果我只是echo $resp我收到所有HTML内容,但json数据不在那里。

我没有专家对我想做的事情,所以我确定我错过了什么,但不确定是什么。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您提供的网址是网页本身,而不是JSON数据。该页面中的JavaScript 从其他地方加载 JSON数据,具体来说,从这里开始:

https://www.speedway.com/_layouts/Speedway/GasPrices.aspx?lat=40.4172871&lng=-82.90712300000001&st=ohio

请改用它,您的代码应检索正确的数据。

答案 1 :(得分:1)

您遇到语法错误。

CURLOPT_HEADER, 1,

应该是

CURLOPT_HEADER => 1,

或者只是完全删除它,因为它不是必需的。

但是,从中获取数据的网址无论如何都不是JSON页面。