我试图从此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数据不在那里。
我没有专家对我想做的事情,所以我确定我错过了什么,但不确定是什么。有什么想法吗?
答案 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页面。