繁体   English   中英

Yahoo Finance:404响应码(PHP)

[英]Yahoo Finance: 404 response code (PHP)

我正在使用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请求失败! 在x的y.php中找不到HTTP / 1.0 404

手动输入上一个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编码,否则您将拥有无效的URL ...

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

尝试将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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM