簡單的用Python采集股票數據,保存表格后分析歷史數據

前言

字節跳動如果上市,那么鐘老板將成為我國第一個世界首富


趁著現在還沒上市,咱們提前學習一下用Python分析股票歷史數據,抱住粗大腿坐等起飛~

好了話不多說,我們直接開始正文

準備工作

環境使用

  • Python 3.10 解釋器
  • Pycharm 編輯器

模塊使用

  • requests —> 數據請求模塊
  • csv -> 保存csv表格
  • pandas -> 可以實現保存Excel表格文件

requestspandas是第三方模塊,需要手動安裝,直接pip install 加上模塊名字即可。

案例實現流程

數據來源分析

  1. 明確需求: 明確采集的網站以及數據內容
    - 網址: 本次目標
    - 數據: 股票數據

  2. 抓包分析: 分析 股票數據, 可以請求那個網址能夠得到
    - 打開開發者工具: F12 / 右鍵點擊檢查選擇 network (網絡)
    - 點擊第二頁數據

     請求網址:請求方式:請求頭:
    

代碼實現步驟

  1. 發送請求 -> 模擬瀏覽器對于url發送請求
  2. 獲取數據 -> 獲取服務器返回響應數據 <整個數據>
  3. 解析數據 -> 提取我們需要數據
  4. 保存數據 -> 保存表格文件 < csv / Excel > 中

代碼解析

保存表格文件

  1. csv -> csv模塊
  2. Excel -> pandas模塊
# 創建文件對象
f = open('股票.csv', mode='w', encoding='utf-8', newline='')
# fieldnames 字段名 表頭一行數據 <前面保存字典的鍵>
csv_writer= csv.DictWriter(f, fieldnames=['股票代碼','股票名稱','當前價','漲跌額','漲跌幅','年初至今','成交量','成交額','換手率','市盈率(TTM)','股息率','市值',
])
# 寫入表頭
csv_writer.writeheader()
# 創建一個空列表
content_list = []

發送請求

模擬瀏覽器對于url發送請求

  • 模擬瀏覽器: headers 請求頭
    • 從瀏覽器開發者工具中直接復制
    • 字典數據類型, 構建完整鍵值對形式
  • 請求網址:
    從瀏覽器開發者工具中直接復制
  • 發送請求:
    需要requests模塊 -> pip install requests

<Response [200]> 響應對象 表示請求成功

# 模擬瀏覽器
headers = {'Cookie': 's=av17ye9exq; xq_a_token=cf755d099237875c767cae1769959cee5a1fb37c; xq_r_token=e073320f4256c0234a620b59c446e458455626d9; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTcwMTk5NTg4MCwiY3RtIjoxNzAwNTYzOTE3MDU2LCJjaWQiOiJkOWQwbjRBWnVwIn0.EbAa9h0fB9H_sH415f3x8r2CQiKmPbXZMnuKCy401scB1lMQKOffws6WTwPD2UzFWnntYxIQYSJpX509VUYYgCQkZ_bYtLbtYd5PfxLhWx7coauYA4d3x5aZolzB3eP5IthaYAb0Kbj3MPK8LVRBhABpRGr4wajISuABFNezroM_-5dpiOYK7Rk0UXtU2Qhrzxi1BVCgFUhPP-oR_vKenBw5tLzSqa6aO7CukgI7JVb-6LiymuBquE8FE-de8Vs3evai0fvtjiqryrH3EWM3nmDQIayigHRrYo595bD32kUPP4swHF5U2fwbLHTntIRAm9LsXn8sVf-6sUdgHoYZGg; cookiesu=931700563933974; u=931700563933974; device_id=5da9e0ae658f9fcd3d89078312131fb7; Hm_lvt_1db88642e346389874251b5a1eded6e3=1700563934; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1700563934','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
for page in range(1, 58):print(f'==============正在采集第{page}頁數據內容==============')# 請求網址url = f'https://stock.雪球.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&order_by=amount&exchange=CN&market=CN&type=sha'# 發送請求response = requests.get(url=url, headers=headers)

獲取數據

獲取服務器返回響應數據 <整個數據>

  • response.text 獲取響應文本數據 <字符串>
  • response.json() 獲取響應json數據 <json數據 大部分情況字典數據>
  • response.content 獲取響應二進制數據 <保存圖片/視頻/音頻/特定格式文件的時候>

解析數據

提取我們需要數據
解決數據方法根據獲取數據來選擇的:
字典取值方法 -> 鍵值對取值 (根據冒號左邊的內容[鍵], 提取冒號右邊的內容[值])

json_data = response.json()  # 返回json字典數據
# for循環遍歷
for index in json_data['data']['list'][1:]:# 提取數據保存到字典里面, 方便后續保存表格文件dit = {'股票代碼': index['symbol'],'股票名稱': index['name'],'當前價': index['current'],'漲跌額': index['chg'],'漲跌幅': index['percent'],'年初至今': index['current_year_percent'],'成交量': index['volume'],'成交額': index['amount'],'換手率': index['turnover_rate'],'市盈率(TTM)': index['pe_ttm'],'股息率': index['dividend_yield'],'市值': index['market_capital'],}# 保存數據csv_writer.writerow(dit)# 把字典添加到空列表里面content_list.append(dit)print(dit)

效果展示

獲取到數據保存到表格后

采集數據和可視化分析部分的代碼我都打包好了,文末名片自取。

可視化分析

import pandas as pd         # 做表格數據處理模塊 第三方的
from pyecharts.charts import Bar    # 可視化模塊 第三方模塊
from pyecharts import options as opts   # 可視化模塊里面的設置模塊(圖表樣式)# 1. 讀取數據
df = pd.read_csv('股票.csv')
x = list(df['股票名稱'].values)
y = list(df['成交量'].values)c = (Bar().add_xaxis(x[:10]).add_yaxis("成交額", y[:10]).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),title_opts=opts.TitleOpts(title="Bar-旋轉X軸標簽", subtitle="解決標簽名字過長的問題"),).render("成交量圖表.html")
)

好了,今天的分享就到這結束了,下次見。

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

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

相關文章

如何應用ChatGPT撰寫、修改論文及工作報告,提供寫作能力及優化工作??

如果我想讓gpt從pdf文檔中提取相關關鍵詞的內容&#xff0c;可以怎么做呢&#xff1f;&#xff1f;我們評論區討論 ChatGPT 在論文寫作與編程方面也具備強大的能力。無論是進行代碼生成、錯誤調試還是解決編程難題&#xff0c;ChatGPT都能為您提供實用且高質量的建議和指導&am…

愛上C語言:scanf、gets以及getchar輸入字符串你真的懂了嗎

&#x1f680; 作者&#xff1a;阿輝不一般 &#x1f680; 你說呢&#xff1a;不服輸的你&#xff0c;他們拿什么贏 &#x1f680; 專欄&#xff1a;愛上C語言 &#x1f680;作圖工具&#xff1a;draw.io(免費開源的作圖網站) 如果覺得文章對你有幫助的話&#xff0c;還請點贊…

通過ros系統中websocket中發送sensor_msgs::Image數據給web端顯示

通過ros系統中websocket中發送sensor_msgs::Image數據給web端顯示 #include <ros/ros.h> #include <signal.h> #include <sensor_msgs/Image.h> #include <message_filters/subscriber.h> #include <message_filters/synchronizer.h> #include &…

spring 是如何開啟事務的, 核心原理是什么

文章目錄 spring 是如何開啟事務的核心原理1 基于注解開啟事務2 基于代碼來開啟事務 spring 是如何開啟事務的 核心原理 Spring事務管理的實現有許多細節&#xff0c;如果對整個接口框架有個大體了解會非常有利于我們理解事務&#xff0c;下面通過講解Spring的事務接口來了解…

建行廣東省江門市分行走進農村地區開展反假貨幣宣傳

人民對美好生活的向往&#xff0c;涉及方方面面&#xff0c;小至“錢袋子”安全。建行廣東省江門市分行落實當地監管部門部署&#xff0c;積極扛起維護國家金融安全的重要政治責任&#xff0c;深入農村地區開展反假貨幣宣傳工作&#xff0c;助力構建農村反假貨幣工作長效機制。…

Hyper-V系列:windows11開啟系統自帶安卓虛擬機并安裝apk包

本文記錄了Windows11系統下開啟系統自帶的安卓虛擬機,并通過安裝包安裝自定義應用的過程。開啟系統自帶的安卓虛擬機流程為:開啟Hyper-V、安裝Windows11子系統;安裝apk安裝包的流程為:安裝adb調試工具、開啟子系統的開發者模式、安裝apk應用包。 一. 開啟Hyper-V Hyper-V…

[BJDCTF2020]The mystery of ip1

提示 ssti模板注入head頭x-forwarded-for 每一次做題的最開始流程都大致因該是 信息收集找可以操控的地方 查看hint頁面的源代碼又發現它提示說 ####你知道為什么會知道你的ip嗎 查看flag頁面 從剛才給我的提示以及他這里顯示的我的ip&#xff0c;大概找到了我可操作的可控點 …

【Vue】創建第一個實例

步驟&#xff1a; 1.創建容器 2.引包 3.創建實例 4.添加配置項 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!--準備容器 --> <di…

【C語言:深入理解指針二】

文章目錄 1. 二級指針2. 指針數組3. 字符指針變量4. 數組指針變量5. 二維數組傳參的本質6. 函數指針變量7. 函數指針數組8. 轉移表9. 回調函數10. qsort函數的使用與模擬實現 1. 二級指針 我們知道&#xff0c;指針變量也是變量&#xff0c;它也有自己的地址&#xff0c;使用什…

【面試】jvm中堆是分配對象存儲的唯一選擇嗎

目錄 一、說明二、逃逸分析2.1 說明2.2 參數設置 一、說明 1.在《深入理解Java虛擬機》中關于Java堆內存有這樣一段描述:隨著JIT編譯期的發展與逃逸分析技術逐漸成熟&#xff0c;棧上分配、標量替換優化技術將會導致一些微妙的變化&#xff0c;所有的對象都分配到堆上也漸漸變得…

牛客 最小公配數 golang版實現

題目請參考: HJ108 求最小公倍數 題解: 在大的數的倍數里面去找最小的能整除另外一個數的數&#xff0c;就是最小公倍數&#xff0c;按照大的來找&#xff0c;循環次數能夠降到很少&#xff0c;提升效率 golang實現: package mainimport ("fmt" )func main() {a : …

CSDN最新最全python+pytest接口自動化(12)-自動化用例編寫思路 (使用pytest編寫一個測試腳本)

經過之前的學習鋪墊&#xff0c;我們嘗試著利用pytest框架編寫一條接口自動化測試用例&#xff0c;來厘清接口自動化用例編寫的思路。 我們在百度搜索天氣查詢&#xff0c;會出現如下圖所示結果&#xff1a; 接下來&#xff0c;我們以該天氣查詢接口為例&#xff0c;編寫接口測…

JVM 之 class文件詳解

目錄 一. 前言 二. class文件結構 2.1. 文件格式 2.2. 魔數與版本號 2.3. 常量池 2.4. 訪問標志 2.5. 類索引、父類索引和接口索引集合 2.6. 字段表集合 2.7. 方法表集合 2.8. 屬性表集合 2.8.1. Code 屬性表 2.8.2. Exceptions 屬性 2.8.3. LineNumberTable 屬性…

R語言數據縮放-1到1

目錄 普通scale -1到1限定范圍scale 普通scale R語言實戰&#xff1a;scale&#xff08;&#xff09;函數 - 知乎 (zhihu.com) scale(x, center TRUE, scale TRUE) 過程&#xff1a; 對每個變量&#xff08;列&#xff09;計算平均值&#xff08;mean&#xff09;和標準…

QT中樣式表常見屬性與顏色的設置與應用

常見樣式表屬性 在Qt中的樣式表(QSS)中,有一些特定的英文單詞和關鍵字用于指定不同的樣式屬性。以下是常見的一些英文單詞和關鍵字: 顏色(Colors): color: 文本顏色 background-color: 背景顏色 border-color: 邊框顏色 字體(Fonts): font: 字體 font-family: 字體…

任意文件下載漏洞(CVE-2021-44983)

簡介 CVE-2021-44983是Taocms內容管理系統中的一個安全漏洞&#xff0c;可以追溯到版本3.0.1。該漏洞主要源于在登錄后臺后&#xff0c;文件管理欄存在任意文件下載漏洞。簡言之&#xff0c;這個漏洞可能讓攻擊者通過特定的請求下載系統中的任意文件&#xff0c;包括但不限于敏…

python3實現grep命令

由于windows上面沒有類似linux上面的grep命令&#xff0c;所以下面的python腳本來代替其能力。 grep.py import argparse import reif __name__ __main__:arg_parser argparse.ArgumentParser()arg_parser.add_argument("grep")arg_parser.add_argument("fil…

圖像導向濾波

導向濾波&#xff08;Guided Filter&#xff09;是一種基于局部線性模型的濾波方法&#xff0c;用于圖像處理中的去噪、圖像增強和邊緣保留等任務。它結合了引導圖像&#xff08;guide image&#xff09;和輸入圖像來實現對輸入圖像的濾波操作。 原理 數學原理&#xff1a; …

文件名稱管理文件:抓關鍵字歸類文件,讓文件管理變得簡單明了

在當今數字時代&#xff0c;每天都要處理大量的文件&#xff0c;無論是文本、圖片、視頻還是其他類型的文件。如何有效地管理這些文件&#xff0c;能夠迅速找到所需的信息&#xff0c;已經成為了一個重要的問題。文件名稱是文件內容的第一反映&#xff0c;也是識別和檢索文件的…

408-數據結構-代碼題

2014 2014 二叉樹&#xff08;鏈式存儲&#xff09; #include<iostream> #include<bits/stdc.h> using namespace std;typedef struct Node{struct Node *left;struct Node *right;int high0;double weight; }node;double sum0;void visit(node *t){int lop0;if…