python_巨潮年報pdf下載

目錄

前置:

步驟:

step one:?pip安裝必要包,獲取年報url列表

step two:?將查看url列表轉換為pdf url

step three:?多進程下載pdf?


前置:

1?了解一些股票的基本面需要看歷年年報,在巨潮一個個下載比較費時間,所以考慮用python把年報pdf下載下來。

2?如果要下載的股票個數很多,提前預備好大硬盤。本人下載深滬兩市年報,大概150G。另外,要耐心,整個下載過程要十幾二十小時,視電腦配置和網絡而定。

步驟:

step one:?pip安裝必要包,獲取年報url列表

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install akshare -i https://pypi.tuna.tsinghua.edu.cn/simple

pandas?本地處理數據、openpyxl?excel表格處理需要這個包、akshare獲取url接口(要了解akshare具體用法可以看其官網,直接百度搜素就能找到其官網)

1?獲取股票代碼列表,可以在通達信中獲取。(通達信行情-》A股-》按“34”鍵-》導出表格)

2?寫代碼,遍歷每個股票,一個股票一個Excel,記錄該股票所有年報url。(巨潮最早能查到2000年)

def temp_000():import akshare as akpre_dir = r'E:/temp002/'with open('./stock_ticker.txt',mode='r',encoding='utf-8') as fr:contents = fr.read()stock_ticker_list = contents.split('\n')for symbol_str in stock_ticker_list:try:df = ak.stock_zh_a_disclosure_report_cninfo(symbol=symbol_str, market="滬深京",category="年報",start_date="20000101",end_date="20250315")df.to_excel(pre_dir+symbol_str+'.xlsx',engine='openpyxl')except:print(symbol_str)pass

3?這個過程大概半個小時到一個小時

?公告鏈接,這一列就是我們要的

step two:?將查看url列表轉換為pdf url

step one獲取的公告鏈接是網頁查看的url,要下載pdf需要獲取pdf對應的url

1?拿一個公告鏈接用瀏覽器打開,尋找pdf對應的url

http://www.cninfo.com.cn/new/disclosure/detail?stockCode=000001&announcementId=1222806509&orgId=gssz0000001&announcementTime=2025-03-15 00:00:00

?2 對比pdf url與公告鏈接的關系,將所有公告鏈接轉換成pdf對應的url

def temp_001():pre_dir = r'E:/temp002/'tar_dir = r'E:/temp006/'file_list = os.listdir(pre_dir)for file_one in file_list:ticker = file_one[0:6]pre_file_path = pre_dir + file_onedf = pd.read_excel(pre_file_path,engine='openpyxl')url_list = df['公告鏈接'].to_list()pdf_url_list = []for u_one in url_list:u_one_00 = u_one.split('&')node_00 = u_one_00[1].replace('announcementId=','')node_01 = u_one_00[-1].replace('announcementTime=','')node_01 = node_01[0:10]tar_node = f'http://static.cninfo.com.cn/finalpage/{node_01}/{node_00}.PDF'pdf_url_list.append(tar_node)passpdf_url_list_str = '\n'.join(pdf_url_list)with open(f'{tar_dir}/{ticker}.txt', mode='w', encoding='utf-8') as fw:fw.write(pdf_url_list_str)passpass

3?這個過程幾分鐘,一個股票對應一個txt文件

step three:?多進程下載pdf?

要下載的pdf很多,但股票個數也就五千多個,本人搞了個簡單的多線程

1?分5個線程,把txt文件分到五個文件夾里,文件夾以0、1、2、3、4命名

2?創建下載后放置pdf文件的文件夾,文件夾同樣以0、1、3、4命名

3?寫代碼,執行。等待執行完畢,整個過程十幾小時以上,看電腦配置和網絡情況。

import os,threading'''
多線程下載財報
'''# 創建多個線程
def temp_thread():threads = []for i in range(5):thread = threading.Thread(target=temp_005,args=(i,))threads.append(thread)thread.start()passfor thread in threads:thread.join()print('all thread finished')pass# 執行項
def temp_005(i):import requestspre_dir = r'E:/temp006/'+str(i)+'/'tar_dir = r'E:/temp007/'+str(i)+'/'file_list = os.listdir(pre_dir)for file_one in file_list:ticker = file_one[0:6]tar_dir00 = tar_dir + ticker + os.path.sepif not os.path.exists(tar_dir00):os.mkdir(tar_dir00)url_file_path = pre_dir + file_onewith open(url_file_path,'r') as fr:url_str = fr.read()url_list = url_str.split('\n')try:for url_one in url_list:tar_file_name00 = url_one.split('/')tar_file_name = f"{tar_file_name00[-2]}_{tar_file_name00[-1]}.pdf"try:res = requests.get(url_one)if res.status_code == 200:with open(tar_dir00+tar_file_name,'wb') as fw:fw.write(res.content)passelse:error_str = f'下載失敗,狀態碼:{res.status_code}。{url_one}\n'with open(f'./{i}.txt','a',encoding='utf-8') as fw:fw.write(error_str)except:print(url_one)passpassexcept:print(ticker)passprint('----------------end---',i)passif __name__ == '__main__':temp_thread()pass

執行完畢后,研究歷年財報再也不用一個個下載啦,哈哈哈

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73564.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從0到1構建AI深度學習視頻分析系統--基于YOLO 目標檢測的動作序列檢查系統:(2)消息隊列與消息中間件

文章大綱 原始視頻隊列Python 內存視頻緩存優化方案(4GB 以內)一、核心參數設計二、內存管理實現三、性能優化策略四、內存占用驗證五、高級優化技巧六、部署建議檢測結果隊列YOLO檢測結果隊列技術方案一、技術選型矩陣二、核心實現代碼三、性能優化策略四、可視化方案對比五…

React Native 如何使用 Expo 快速開發?

React Native是當下熱門的跨平臺移動開發框架,而Expo則是它的重要開發工具之一。Expo提供了一套完整的開發環境,使開發者無需安裝Android Studio或Xcode也能快速運行React Native項目。它包含了眾多內置API,如相機、地理位置、推送通知等&…

中考英語之09從句

1 賓語從句 定義 在主從復合句中充當賓語,位于及物動詞、介詞或復合謂語之后的從句。 引導詞 綜述: that(可省略)、if/whether、連接代詞(what、which、who、whom、whose 等)和連接副詞(when、…

平方矩陣問題

Ⅰ 回字形二維數組 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…

C++模版(復習)

1.泛型編程&#xff1a;編寫與類型無關的通用代碼&#xff0c;是代碼復用的一種手段。模板是泛型編程的基礎 2.函數模板的格式 template<typename T1,typename T2,…,typename Tn> 返回類型 函數名(參數列表) { ??//函數體 } 3.template<class T1,class T2,…,class…

【sklearn 05】sklearn功能模塊

sklearn功能模塊 分類&#xff1a;識別某個對象屬于那個類別回歸&#xff1a;預測與對象相關聯的連續值屬性聚類&#xff1a;將相似對象自動分組降維&#xff1a;減少要考慮的隨機變量的數量模型選擇&#xff1a;比較、驗證、選擇參數和模型預處理&#xff1a;特征提取和歸一化…

使用Qt創建懸浮窗口

在Qt中創建懸浮窗口&#xff08;如無邊框、可拖動的浮動面板或提示框&#xff09;可以通過以下方法實現。以下是幾種常見場景的解決方案&#xff1a; 方法1&#xff1a;使用無邊框窗口 鼠標事件拖動 適用于自定義浮動工具窗口&#xff08;如Photoshop的工具欄&#xff09;。 …

《P4387 【深基15.習9】驗證棧序列》

題目描述 給出兩個序列 pushed 和 poped 兩個序列&#xff0c;其取值從 1 到 n(n≤100000)。已知入棧序列是 pushed&#xff0c;如果出棧序列有可能是 poped&#xff0c;則輸出 Yes&#xff0c;否則輸出 No。為了防止騙分&#xff0c;每個測試點有多組數據&#xff0c;不超過 …

校園安全用電怎么保障?防觸電裝置來幫您

引言 隨著教育設施的不斷升級和校園用電需求的日益增長&#xff0c;校園電力系統的安全性和可靠性成為了學校管理的重要課題。三相智能安全配電裝置作為一種電力管理設備&#xff0c;其在校園中的應用不僅能夠提高電力系統的安全性&#xff0c;還能有效保障師生的用電安全&am…

【Git】--- 初識Git Git基本操作

Welcome to 9ilks Code World (??? ? ???) 個人主頁: 9ilk (??? ? ???) 文章專欄&#xff1a; Git 本篇我們來初步認識Git企業級應用是什么&#xff0c;有什么用以及Git基本操作。 &#x1f3e0; 初始Git 提出問題 在日常生活中&#xff0c;我們進行…

數據治理下半場:如何用文化變革撬動企業數字化轉型?

數據治理下半場:如何用文化變革撬動企業數字化轉型? 一、打破認知繭房:從"數據恐懼癥"到"數據生產力"二、重構協作生態:從"部門墻"到"數據共同體"三、建立責任體系:從"無人認領"到"終身責任制"?四、點燃創新…

Chat-Driven Business:靈活交互的新范式

1. 引言 一次偶然的機會&#xff0c;讀到了CSDN上的一篇文章&#xff0c;自定義markdown的展示(很遺憾&#xff0c;時間有點久&#xff0c;找不到具體的鏈接了&#xff09;&#xff0c;當時我覺得這很有啟發意義&#xff0c;因為我做的cli_assistant就是以markdown的形式返回的…

嵌入式裸機設計--MCU常用裸機架構有哪些?

為什么是裸機設計 792125321入群學習更高效&#xff01; 在MCU&#xff08;微控制器單元&#xff09;裸機開發中&#xff0c;我們常見的架構設計主要圍繞如何高效管理資源和任務調度。認識這些開發方式&#xff0c;對我們開發一個小型項目來說及有好處&#xff01; 下面介紹…

python內置函數sum的用法

知識點 - sum 函數 基本語法 sum(iterable[, start]) iterable 是一個可迭代對象&#xff0c;例如列表、元組、集合等&#xff0c;其中的元素通常是數字類型&#xff08;整數或浮點數&#xff09;。 start 是一個可選參數&#xff0c;表示累加的起始值&#xff0c;默認為 0。…

編程語言的幾種常見的分類方法

一、 按照編程范式分類 命令式編程語言 強調通過語句來改變程序狀態&#xff0c;如 C、Pascal、Fortran 等。 面向對象編程語言 基于對象和類的概念&#xff0c;支持封裝、繼承和多態&#xff0c;如 Java、C、Python、Ruby 等。 函數式編程語言 注重不可變性和純函數&#xf…

基于DeepSeek×MWORKS 2025a的ROM Builder自動化降階實戰

一、引言 當前&#xff0c;工業仿真領域正經歷著前所未有的「智能焦慮」——當自動駕駛算法已能理解城市路網&#xff0c;當大模型開始設計蛋白質結構&#xff0c;這個驅動大國重器研發的核心領域&#xff0c;卻仍在與千萬級方程組成的龐雜模型艱難博弈。傳統仿真降階如同在數…

配置單區域OSPF實驗和報文抓包和分析

一、配置單區域OSPF概念&#xff1a; &#xff08;1&#xff09;配置單區域OSPF&#xff08;Open Shortest Path First&#xff09;是一種常見的動態路由協議配置方式&#xff0c;主要用于在同一區域內實現路由信息的交換和路由表的更新。 &#xff08;2&#xff09;OSPF是一…

巴耶赫利專業俄語外貿網站建設

巴耶赫利是專業俄語外貿網站建設與俄語搜索引擎Yandex SEO優化服務商。巴耶赫利致力于幫助中國品牌出海俄羅斯&#xff0c;打開俄羅斯市場&#xff0c;提升品牌在俄羅斯的知名度和美譽度。 以下是對巴耶赫利相關服務的詳細介紹&#xff1a; 一、巴耶赫利專業俄語外貿網站建設…

Netty基礎—6.Netty實現RPC服務三

大綱 1.RPC的相關概念 2.RPC服務調用端動態代理實現 3.Netty客戶端之RPC遠程調用過程分析 4.RPC網絡通信中的編碼解碼器 5.Netty服務端之RPC服務提供端的處理 6.RPC服務調用端實現超時功能 5.Netty服務端之RPC服務提供端的處理 (1)RPC服務提供端NettyServer (2)基于反射…

路由器與防火墻配置命令

路由器與防火墻配置命令 小明啊&#xff0c;你不是學計算機的嘛&#xff0c;叔叔家的路由器壞了&#xff0c;可以過來幫叔叔看看嗎 命令可以用縮寫&#xff0c;造就一堆容易造成歧義的縮寫&#xff0c;比如add是address的縮寫&#xff0c;sh是shutdown的縮寫。 默認為Cisco路…