我试图从网站获取json数据。在第一个链接中,它返回空白。 但在第二个,它返回json。
有人知道如何从第一个链接获取json数据吗?
在访问此代码之前,请登录此链接: https://loginfree.globo.com/login/438 用户:cartolaewlfa@gmail.com 传球:cartoletasfc
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<iframe src="http://cartolafc.globo.com/time/claudioivp-allianz/atletas.json?rodada_id=12"></iframe>
<?php
$file = json_decode(file_get_contents("http://cartolafc.globo.com/time/claudioivp-allianz/atletas.json?rodada_id=12"));
print_r($file);
echo "casa";
?>
<iframe src="http://cartolafc.globo.com/mercado/filtrar.json?page=1&order_by=preco&clube_id=277"></iframe>
<?php
$file = json_decode(file_get_contents("http://cartolafc.globo.com/mercado/filtrar.json?page=1&order_by=preco&clube_id=277"));
print_r($file);
echo "casa";
?>
</body>
</html>
答案 0 :(得分:1)
显然,第一个json URI要求用户登录网站,否则会将您重定向到主页,而第二个似乎对所有人开放。
我在这里看到的唯一解决方案是使用curl(或您想要的任何其他方法)来模拟浏览器并按照该网站的登录过程,发送您的登录信息,密码以及其所需的任何其他信息。然后你可以捕获它将生成的cookie。获得cookie后,您可以将其保存在cookiejar文件或数据库中。
使用这些cookie,您将能够检索json文件,您可以使用file_get_contents
对象通过stream_context
发送它们,或者如果您使用curl,则{{1 }和CURLOPT_COOKIE
当然这些cookie将过期。只需设置一个验证流程,如果存储的cookie已过期,它将获得新的cookie。
如果此json文件的内容没有以高频率更新,或者对于用户立即获取这些更新并不重要,那么您可以在服务器中保留此json文件的副本,而不受任何访问限制。
这会很愚蠢,但如果域名是你的(或者你有权访问它),只需删除该文件中的登录验证?