Perl爬取上证A股数据写入Excel

使用Perl爬取东方财富网的上证A股数据

use JSON;
use Encode;
use LWP::Simple;
use Excel::Writer::XLSX;
use utf8;
use POSIX qw(strftime);

$abc = 'http://10.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152';
$data = get $abc;
die "Couldn't get data" unless defined $data;
$temp = decode_json($data);
$sum = $temp->{'data'}->{'total'};
$url = 'http://10.push2.eastmoney.com/api/qt/clist/get?pn=1&pz='.$sum.'&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152';
$content = get $url;
die "Couldn't get data" unless defined $content;
$obj = decode_json($content);
$t = strftime "%Y%m%d%H%M%S", localtime;

$workbook = Excel::Writer::XLSX->new('shanghaistockexchange'.$t.'.xlsx');
$worksheet = $workbook->add_worksheet();
@name = ('股票名称', '股票代码', '最新价','跌涨幅','跌涨额','成交量','成交额','振幅','换手率','市盈率','量比','最高','最低','今开','昨收');
$name_ref = \@name;
$worksheet->write_row(0,0,$name_ref);

$i = 1;
for $item(@{$obj->{'data'}->{'diff'}}){
    @array;
    $array[0] = $item->{'f14'}; #股票名称
    $array[1] = $item->{'f12'}; #股票代码
    $array[2] = $item->{'f2'}; #最新价
    $array[3] = $item->{'f3'} eq '-' ? '-' : $item->{'f3'}."%"; #跌涨幅
    $array[4] = $item->{'f4'}; #跌涨额
    $array[5] = $item->{'f5'}; #成交量
    $array[6] = $item->{'f6'}; #成交额
    $array[7] = $item->{'f7'} eq '-' ? '-' : $item->{'f7'}."%"; #振幅
    $array[8] = $item->{'f8'} eq '-' ? '-' : $item->{'f8'}."%"; #换手率
    $array[9] = $item->{'f9'}; #市盈率
    $array[10] = $item->{'f10'}; #量比
    $array[11] = $item->{'f15'}; #最高
    $array[12] = $item->{'f16'}; #最低
    $array[13] = $item->{'f17'}; #今开
    $array[14] = $item->{'f18'}; #昨收
    $array_ref = \@array;
    $worksheet->write_row( $i, 0, $array_ref );
    $i++;
}

$workbook->close();

结果如图所示


perl上证.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容