Raku(Perl6)爬取美股数据

美股数据源自东方财富网。本来打算用zef安装操作excel的包,无奈win10下很多包都装不好,于是选择用powershell写入txt保存。代码如下所示

use HTTP::UserAgent;
use JSON::Tiny;

try {
    my $client = HTTP::UserAgent.new;
    my $abc = "http://3.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:105,m:106,m:107&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152";
    my $temp =  from-json $client.get($abc).content;
    my $sum = $temp<data><total>.Str;

    my $target = "http://3.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:105,m:106,m:107&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152";
    my $data0 =  $client.get($target).content;
    my $temp0 = from-json $data0;

    my $total = ($temp0<data><diff>).elems - 1;
    my @foo = 0..$total;

    for @foo {
        put "****************************************"; 
        put "股票名称:$temp0<data><diff>[$_]<f14>";
        put "股票缩写:$temp0<data><diff>[$_]<f12>";
        put "上市时间:$temp0<data><diff>[$_]<f26>";
        put "最新价:  $temp0<data><diff>[$_]<f2>";
        put "涨跌幅:  $temp0<data><diff>[$_]<f3>%";
        put "跌涨额:  $temp0<data><diff>[$_]<f4>";
        put "开盘价:  $temp0<data><diff>[$_]<f17>";
        put "最高价:  $temp0<data><diff>[$_]<f15>";
        put "最低价:  $temp0<data><diff>[$_]<f16>";
        put "昨收价:  $temp0<data><diff>[$_]<f18>";
        put "总市值:  $temp0<data><diff>[$_]<f20>";
        put "市盈率:  $temp0<data><diff>[$_]<f9>";
        put "****************************************";        
        }
    }

put "ERROR: $!" if $!;
put "Program end!";

然后使用powershell
raku fucktest.pl6 >> USAstockinfo.txt
将结果输出到txt文件,结果如下图所示

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

推荐阅读更多精彩内容