1楼占位
股市数据API接口和实例
- 523066680
- Administrator
- 帖子: 573
- 注册时间: 2016年07月19日 12:14
- 联系:
通过雪球网站接口获取沪深股票清单
代码: 全选
use utf8;
use Encode;
use Modern::Perl;
use File::Slurp;
use File::Path qw/make_path/;
use POSIX;
use Mojo::UserAgent;
use JSON qw/from_json to_json/;
STDOUT->autoflush(1);
binmode(STDOUT, ":encoding(gbk)");
my $wdir = "./沪深一览";
# my $wdir = "./ETF一览";
make_path( gbk($wdir) ) unless -d gbk($wdir);
# 沪深 https://stock.xueqiu.com/v5/stock/screener/quote/list.json
# ETF https://stock.xueqiu.com/v5/stock/screener/fund/list.json
my $url = "https://stock.xueqiu.com/v5/stock/screener/quote/list.json";
my %args = (
'page' => '1',
'size' => '90',
'order' => 'desc',
'orderby' => 'percent',
'order_by' => 'percent',
# 'type' => '18', # ETF
'type' => 'sh_sz', # 沪深
'parent_type' => 1
);
my $ua = Mojo::UserAgent->new();
$ua->cookie_jar->add(
Mojo::Cookie::Response->new(
name => "xq_a_token",
value => "xq_a_token 值从chrome调试中获取",
domain => 'stock.xueqiu.com',
path => '/',
)
);
my $export = "list.json";
my %list;
# 获取第一页
my $res = $ua->get( $url, form => \%args )->result;
if ( exists $res->json->{data}{count} )
{
update_list( \%list, $res->json );
}
my $count = $res->json->{data}{count};
my $last = ceil($count / 90);
printf "总数 %d\n", $count;
# 剩余页面
for my $pg ( 2 .. $last )
{
$args{'page'} = $pg;
my $res = $ua->get( $url, form => \%args )->result;
if ( exists $res->json->{data}{count} )
{
printf "Page: %d\n", $pg;
update_list( \%list, $res->json );
}
else
{
printf "Page: %d, false\n", $pg;
}
}
write_file( $export, utf8(to_json( \%list, { pretty => 1, canonical => 1 } )) );
sub update_list
{
my ( $list, $data ) = @_;
for my $e ( @{$data->{data}{list}} )
{
# next if $e->{name} =~ /^(ST|\*ST)/i;
# printf "%s %s\n", $e->{symbol}, gbk($e->{name});
$list->{ $e->{symbol} } = $e->{name};
}
}
sub gbk { encode('gbk', $_[0]) }
sub utf8 { encode('utf8', $_[0]) }
sub u2gbk { encode('gbk', decode('utf8', $_[0])) }
sub uni { decode('utf8', $_[0]) }
生成结果
代码: 全选
{
"SH600000" : "浦发银行",
"SH600004" : "白云机场",
"SH600006" : "东风汽车",
"SH600007" : "中国国贸",
"SH600008" : "首创环保",
"SH600009" : "上海机场",
"SH600010" : "包钢股份",
"SH600011" : "华能国际",
"SH600012" : "皖通高速",
"SH600015" : "华夏银行",
"SH600016" : "民生银行",
...
- 523066680
- Administrator
- 帖子: 573
- 注册时间: 2016年07月19日 12:14
- 联系:
获取沪深股票清单 - 歪枣网
这里歪枣网的获取方式就简单多了
代码: 全选
use utf8;
use Encode;
use Modern::Perl;
use File::Slurp;
use Mojo::UserAgent;
use JSON qw/from_json to_json/;
STDOUT->autoflush(1);
my %args = (
'code' => "All", # 全部
'fields' => 'code,name,z50,z53', # 股票代码、股票名称、归属行业板块名称、归属概念板块名称
'token' => '从歪枣网的用户中心 -> 账户基本信息 中获取',
'export' => "1",
);
# export 导出类型
# 0.Txt字符串 1.Json字符串 2.Txt文件 3.Json文件 4.Csv文件 5.DataFrame格式
my $ua = Mojo::UserAgent->new();
my $res = $ua->get( "http://api.waizaowang.com/doc/getStockHSABaseInfo", form => \%args )->result;
print u2gbk( $res->body );
sub gbk { encode('gbk', $_[0]) }
sub utf8 { encode('utf8', $_[0]) }
sub u2gbk { encode('gbk', decode('utf8', $_[0])) }
sub uni { decode('utf8', $_[0]) }
获取结果部分内容截取
代码: 全选
{"code":200,"message":"成功","data":[{"name":"平安银行","z53":"HS300_,深圳特区,机构重仓,深成500,融资融券,互联金融,证金持股,深证100R,深股通,MSCI中国,区块链,富时罗素,标准普尔,跨境支付,破净股","code":"000001","z50":"银行"},{"name":"万 科A","z53":"AH股,HS300_,深圳特区,深成500,融资融券,央视50_,养老概念,智能家居,北京冬奥,证金持股,深证100R,深股通,超级品牌,MSCI中国,租售同权,富时罗素,标准普尔,猪肉概念,装配建筑,REITs概念,破净股","code":"000002","z50":"房地产开发"},
在线用户
正浏览此版面之用户: 没有注册用户 和 2 访客