perl:获取同花顺数据--业绩快报,业绩公告

2024-03-24 03:36

本文主要是介绍perl:获取同花顺数据--业绩快报,业绩公告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

perldoc LWP::UserAgent

如果没有安装,则安装模块,运行 cpanm LWP::UserAgent  。

编写  get_yjkb_10jqka.pl  如下

#!/usr/bin/perl
# perl 获取同花顺数据--业绩快报
use LWP::UserAgent;
use Encode qw(decode encode);
use POSIX;
use Data::Dumper;
use HTML::TreeBuilder;
use HTML::TreeBuilder::XPath;my $tree= HTML::TreeBuilder::XPath->new;
open(my $DATA,'>', "data.html") or die "open data file failed:$!"; my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
$ua->agent("Mozilla/8.0");
my $response = $ua->get('http://data.10jqka.com.cn/financial/yjkb/');if ($response->is_success) {print $DATA  $response->decoded_content;  # or whatever
#  print $response->decoded_content;  # or whatever$tree->parse_file( "data.html");
};my $title=  $tree->findvalue('/html/body//span[@class="text-value"]');
print " title is $title\n";
$title ='yjkb-2023Y'; 
my $pages = $tree->findvalue('/html/body//span[@class="page_info"]');
my @ps = split('/', $pages);
print " $title pages is $ps[1]\n";sub utf2gbk { encode('gbk', decode('utf8', $_[0]));} 
# 表头一行
my $headline ="序号,股票代码,股票简称,公告日期,营业收入(元),去年同期(元),同比增长(%),季度环比增长(%),净利润(元),去年同期(元),同比增长(%),季度环比增长(%),每股收益(元),每股净资产(元),净资产收益率(%),更多\n";for (my $n=1; $n<=1; $n++){open(my $T, ">", "$title-$n.csv");print $T utf2gbk($headline);my @arr1= $tree->find_by_tag_name("tr") ;shift @arr1; shift @arr1; # 忽略表头2行foreach my $row (@arr1) {my @arr2= $row->content_list;my @str;foreach my $a (@arr2){ push @str, $a->as_text;}my $line = utf2gbk(join(',', @str));     print $T "$line\n"; }close $T;
}

注意:源程序 编码:UTF-8.

运行 cmd

chcp 65001

perl get_yjkb_10jqka.pl 

 title is 2023年年报
 yjkb-2023Y pages is 23

生成 yjkb-2023Y-1.csv 


编写  get_yjgg_10jqka.pl  如下

#!/usr/bin/perl
# perl 获取同花顺数据--业绩公告
use LWP::UserAgent;
use Encode qw(decode encode);
use POSIX;
use Data::Dumper;
use HTML::TreeBuilder;
use HTML::TreeBuilder::XPath;my $tree= HTML::TreeBuilder::XPath->new;
open(my $DATA,'>', "data.html") or die "open data file failed:$!"; my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
$ua->agent("Mozilla/8.0");
my $response = $ua->get('http://data.10jqka.com.cn/financial/yjgg/');if ($response->is_success) {print $DATA  $response->decoded_content;  # or whatever
#  print $response->decoded_content;  # or whatever$tree->parse_file( "data.html");
};my $title=  $tree->findvalue('/html/body//span[@class="text-value"]');
print " title is $title\n";
$title ='yjgg-2023Y'; 
my $pages = $tree->findvalue('/html/body//span[@class="page_info"]');
my @ps = split('/', $pages);
print " $title pages is $ps[1]\n";sub utf2gbk { encode('gbk', decode('utf8', $_[0]));} # 表头一行
my $headline ="序号,股票代码,股票简称,公告日期,营业收入(元),去年同期(元),同比增长(%),季度环比增长(%),净利润(元),去年同期(元),同比增长(%),季度环比增长(%),每股收益(元),每股净资产(元),净资产收益率(%),更多\n";for (my $n=1; $n<=1; $n++){open(my $T, ">", "$title-$n.csv");print $T utf2gbk($headline);my @arr1= $tree->find_by_tag_name("tr") ;shift @arr1; shift @arr1; # 忽略表头2行foreach my $row (@arr1) {my @arr2= $row->content_list;my @str;foreach my $a (@arr2){ push @str, $a->as_text;}my $line = utf2gbk(join(',', @str));     print $T "$line\n"; }close $T;
}

运行 perl get_yjgg_10jqka.pl 

 title is 2023年年报
 yjgg-2023Y pages is 7

生成 yjgg-2023Y-1.csv 

这篇关于perl:获取同花顺数据--业绩快报,业绩公告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/840348

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@