加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

从 Yahoo.com 获取股票数据(csv格式)

发布时间:2020-12-15 21:08:01 所属栏目:大数据 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/perl## Script to download a table of daily stock data in .csv format# from yahoo.com## Syntax: yahoo.pl symbol startdate stopdate

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#!/usr/bin/perl
#
# Script to download a table of daily stock data in .csv format
# from yahoo.com
#
# Syntax: yahoo.pl <symbol> <startdate> <stopdate>
#   where startdate and stopdate can be in almost any format
#

use Date::Manip;

($symbol,$startdate,$stopdate)[email?protected];
$startdate = &ParseDate($startdate);
$stopdate = &ParseDate($stopdate);
#print "symbol=$symbol start=$startdate stop=$stopdaten";

$startday = &UnixDate($startdate,"%d");
$startmon = &UnixDate($startdate,"%m");
$startyear = &UnixDate($startdate,"%y");
$stopday = &UnixDate($stopdate,"%d");
$stopmon = &UnixDate($stopdate,"%m");
$stopyear = &UnixDate($stopdate,"%y");

$port=80; # HTTP
$dataserver="chart.yahoo.com";

$AF_INET=2;
$SOCK_STREAM=1;

$sockaddr='S n a4 x8';

($name,$aliases,$proto)=getprotobyname('tcp');
($name,$type,$len,$remoteaddr)=gethostbyname($dataserver);

$remote=pack($sockaddr,$AF_INET,$port,$remoteaddr);

($a,$b,$c,$d)=unpack('C4',$remoteaddr);
#print "remoteaddr=$a.$b.$c.$d port=$portn";

if (socket(SOCK,$SOCK_STREAM,$proto)) {
  #print "Socket OKn";
} else {
  die $!;
}

if (connect(SOCK,$remote)) {
  #print "connect OKn";
} else {
  die $!;
}

$local=getsockname(SOCK);
($family,$localaddr)=unpack($sockaddr,$local);
($a,$localaddr);
#print "remoteaddr=$a.$b.$c.$d port=$portn";

select(SOCK); $|=1; select(STDOUT);

print SOCK "GET /table.csv?s=$symbol&a=$startmon&b=$startday&c=$startyear&d=$stopmon&e=$stopday&f=$stopyear&g=d&q=q&y=0&z=$symbol&x=.csv HTTP-1.0nn";

$start = 0;

while (<SOCK>) {
  if ($start) {
    ($date,$open,$high,$low,$close,$volume) = split(/,/);
    ($day,$month,$year) = split('-',$date);
    $year = int $year;
    if ($year < 80) {
      $year = $year + 2000;
    }
    $dateint = &ParseDate("$month $day,$year");
    $date = &UnixDate($dateint,"%Y/%m/%d");
    print $date,' ',$volume;
  }
  /^Date/ && ($start = 1);
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读