以下PHP代码(在Laravel上)已经工作了几个月,直到今天,我现在收到502错误,表明连接被拒绝:
$url = "https://query.yahooapis.com/v1/public/yql?q=select+%2A+from+yahoo.finance.quotes+where+symbol+in+%28%27YHOO%27%29&format=json&env=%20store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=";
$data = file_get_contents($url);
dd($data);
当我登录Yahoo Developer Console进行测试时,我能够很好地查询公共数据表。但是,当我尝试使用控制台访问任何社区数据表like this时,我返回以下内容(所有社区数据表都会出现此错误):
{
"error": {
"lang": "en-US",
"diagnostics": {
"url": {
"execution-start-time": "0",
"execution-stop-time": "7",
"execution-time": "7",
"http-status-code": "502",
"http-status-message": "Connection refused",
"content": "http://www.datatables.org/yahoo/finance/yahoo.finance.quotes.xml"
}
},
"description": "No definition found for Table yahoo.finance.quotes"
}
}
使用不同的机器/ IP地址,只要我保持匿名,我就可以很好地访问这些社区表。登录Yahoo Developer Console后,再次显示Connection refused消息。
我怀疑它与雅虎有关,可能会将我的IP地址列入黑名单或限制我的帐户,因为我每天为每个股票(3,000)运行一次此脚本。
我尝试访问错误消息content node中引用的网址,此网站显示已关闭。我不确定此内容节点是否与API有关,因为我可以从其他IP地址访问它。
我可以就如何确定/解决此问题提出建议和意见。
答案 0 :(得分:4)
Yahoo社区表存储在datatables.org中, 和datatables.org关闭;这就是为什么会出现查询问题。
答案 1 :(得分:0)
在其中一篇论坛帖子中,雅虎员工已确认免费的EOD数据已被终止,并且不会重新引入。查看此thread并查找尼克松的回复。雅虎最近被Verizon收购,它必定是新方向。
但是,如果您查看Yahoo财经页面,则CSV下载链接会起作用,但现在不同。它是通过一个新的API使用身份验证令牌" crumb"当您访问该页面时链接到cookie。
我已经整理了一些快速Python3代码,通过这个新API下载与以前相同的CSV。请查看GitHub项目yahoo_quote_download。