过下准备写个股票机械交易系统,先搞掂数据采集这部分先,做了个用php从yahoo获取股票数据的例子, 运行在shell下,其实php做shell几好用的.
gupiao.php , 获取600808马钢股份的数据.
——————————–
<?
include “Snoopy.class.inc”;
$url=”http://finance.cn.yahoo.com/q?s=600808.ss”;
$snoopy = new Snoopy;
$snoopy->agent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”;
$snoopy->fetch($url);
$getstr=$snoopy->results;
$getstr=trim($getstr);
if($getstr==””)
{
print “No Data”;
print “\n”;
exit;
}
$str=mycut(“<span id=\”top_date\”>”,”<div class=\”ft\”>”,$getstr);
$pieces = explode(“</span>”, $str);
$ftime=$pieces[0];
$ftime=trim($ftime);
print “时间: “.$ftime;
print “\n”;
$stra=mycut(“最新价:”,”</”,$str);
$stra=$stra.”</”;
//print $stra;
$stra=mycut(“>”,”</”,$stra);
print “最新价: “.$stra;
print “\n”;
$strb=mycut(“今开盘:”,”</”,$str);
$strb=$strb.”</”;
$strb=mycut(“>”,”</”,$strb);
print “开盘价: “.$strb;
print “\n”;
$strc=mycut(“最高价:”,”</”,$str);
$strc=$strc.”</”;
$strc=mycut(“>”,”</”,$strc);
print “最高价: “.$strc;
print “\n”;
$strd=mycut(“最低价:”,”</li>”,$str);
$strd=mycut(“>”,”</”,$strd);
print “最低价: “.$strd;
print “\n”;
$stre=mycut(“前收盘:”,”</”,$str);
$stre=$stre.”</”;
$stre=mycut(“>”,”</”,$stre);
print “前收盘: “.$stre;
print “\n”;
function mycut($firststr,$laststr,$srcstr)
{
// $findstr=””;
$pos1 = strpos($srcstr, $firststr);
if ($pos1 === false)
{
return “”;
}
//print “pos1: “.$pos1.”\n”;
$pos2 = strpos($srcstr, $laststr, $pos1);
if ($pos2 === false)
{
return “”;
}
if ($pos2<$pos1)
{
return “”;
}
//print “pos2: “.$pos2.”\n”;
// $num=1;
$message=explode($firststr,$srcstr);
$message=explode($laststr,$message[1]);
return $message[0];
}
?>
还是用到php的Snoopy类, 在shell状态下输入php -q gupiao.php就可以执行,当然也可以运行在web下.