【问题标题】:Yahoo Finance: 404 response code (PHP)雅虎财经:404 响应代码 (PHP)
【发布时间】:2016-04-25 15:25:47
【问题描述】:

我正在使用 PHP 根据一组股票代码从 Yahoo Finance 获取 CSV 文件。

我的代码很简单,如下:

$file = 'http://ichart.yahoo.com/table.csv?s='.$this->symbol.'&a='.$a.'&b='.$b.'&c='.$c.'&d='.$d.'&e='.$e.'&f='.$f.'&g='.$g.'&q=q&y=0&z='.$this->symbol.'&x=.csv';
$handle = fopen($file, "r");
//Then use fgetcsv to grab data, 
fclose($handle);

我收到以下错误:

警告:fopen(http://ichart.yahoo.com/table.csv?s=ANA.L&a=2&b=16&c=2016&d=2&e=19&f=2016&g=d&q=q&y=0&z=ANA.L&x=.csv):打开流失败:HTTP 请求失败! HTTP/1.0 404 Not Found in y.php on line x

手动输入上一个 URL (http://ichart.yahoo.com/table.csv?s=ANA.L&a=2&b=16&c=2016&d=2&e=19&f=2016&g=d&q=q&y=0&z=ANA.L&x=.csv) 可以毫无问题地获取 CSV 文件,所以我很困惑为什么会收到 404 响应代码。

编辑: 我在使用 fopen 之前添加了一个 cURL 请求。这是为了检查 404 响应代码。我没有从 cURL 收到任何 404 响应代码,但仍然收到与上述相同的错误。

$curlhandle = curl_init($file);
curl_setopt($curlhandle,  CURLOPT_RETURNTRANSFER, TRUE);
/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($curlhandle);
/* Check for 404 (file not found). */
$httpCode = curl_getinfo($curlhandle, CURLINFO_HTTP_CODE);

if($httpCode == 404) {
    echo "404:".$this->symbol."<br>";
    curl_close($curlhandle);
    return null;
    break;
} else {
    curl_close($curlhandle);
    $handle = fopen($file, "r");                        
}

【问题讨论】:

  • 当使用给定的 URL 作为字符串(直接)通过 PHP 打开文件时,我没有收到任何错误。尝试转义和编码你的变量

标签: php csv fopen yahoo-api yahoo-finance


【解决方案1】:

您需要对所有参数进行 URL 编码,否则您的 URL 可能无效...

$file = 'http://ichart.yahoo.com/table.csv?s='.urlencode($this->symbol).'&a='.urlencode($a).' //etc

【讨论】:

  • 添加了urlencode(),我得到了完全相同的结果
  • 我没有看到任何需要 URL 编码的参数。我不认为这是问题所在。
【解决方案2】:

尝试将ichart.yahoo.com 更改为ichart.finance.yahoo.com。即

file = 'http://ichart.finance.yahoo.com/table.csv?s='.$this->symbol.'&a='.$a.'&b='.$b.'&c='.$c.'&d='.$d.'&e='.$e.'&f='.$f.'&g='.$g.'&q=q&y=0&z='.$this->symbol.'&x=.csv';
$handle = fopen($file, "r");
//Then use fgetcsv to grab data, 
fclose($handle);

【讨论】:

  • 仍然得到完全相同的结果
  • @Calum 这很奇怪。起初我能够复制 404,但现在我无法为任何一个 URL 获取它。
  • 你认为这是雅虎方面的事情吗?可能会限制 IP?
  • @Calum 我不确定。如果是这种情况,我本来预计不会先获得 404,然后再开始获得它们。看起来你也不是第一个经历这种情况的人。 stackoverflow.com/questions/34786030/…
  • @Calum Lol,我刚刚注意到你在我之前一分钟也发现了这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
相关资源
最近更新 更多