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

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

#!/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=$stopdate\n";

$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=$port\n";

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

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

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

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.0\n\n";

$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);
}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...