大家早好、午好、晚好吖 ❤ ~欢迎光临本文章
Python 3.8 解释器
Pycharm 编辑器
第三方:
内置:
一. 数据来源分析
明确需求
明确采集网站以及数据内容
数据: 股票基本信息
抓包分析: 通过浏览器自带工具 开发者工具抓包分析具体数据对应链接地址
打开开发者工具: F12 / 右键点击检查选择network
点击第二页数据
二. 代码实现步骤
发送请求, 模拟浏览器对于url地址发送请求
获取数据, 获取服务器返回响应数据
开发者工具: response
解析数据, 提取我们需要的数据内容
股票基本信息
保存数据, 保存本地文件里面
采集数据
# 导入数据请求模块 第三方模块 需要安装 pip install requests
import requests
# 导入格式化输出模块
from pprint import pprint
# 导入csv模块
import csv
f = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
'股票代码',
'股票名称',
'当前价',
'涨跌额',
'涨跌幅',
'年初至今',
'成交量',
'成交额',
'换手率',
'市盈率(TTM)',
'股息率',
'市值',
'详情页',
])
csv_writer.writeheader() # 写入表头
for page in range(1, 51):
# 请求链接
url = f'*****/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&order_by=amount&exchange=CN&market=CN&type=sha'
# 模拟浏览器 <字典数据类型, 构建完整键值对>
源码、解答、教程等加V:qian97378免费领取
headers = {
# Cookie 用户信息, 常用于检测是否登陆账号
'Cookie': 'xq_a_token=197a3a870824d1754f6edf083d719bd1a3aabe88; xqat=197a3a870824d1754f6edf083d719bd1a3aabe88; xq_r_token=f3676d47182482b690747de814788450c6d4fcf1; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTY5MTYyNzcwNSwiY3RtIjoxNjg5NzY2Mzg5NjAwLCJjaWQiOiJkOWQwbjRBWnVwIn0.kPidbnXxvaxVhgELNZsOTHp8Wzl48BsDxZV7NV3ADScuLTjgAnhSBC3dT_AV6bgnl_xiQXbTR2jedY3jxFv-IAu_t__4UtwtLX8wXBSueU5ZaqMuvOPvM12XP9MPK0wOGzfLVAtChiEZPmuLwjFANG4w6cMJLQ02FpWJtJQgokPySrZgg_TI6u0jteBvWhS53sfQAcZlqGlco3O8BhDwlqNQP_iLM1R5VI5mHfJRt2caHBMgnCPiciWG7qHXAPmt06xtpQE5TO15fY7GCiz8rYZBG4fmgpSPJ9h0FP7MjjN0vWQbgLHPaS-5D0RuQFm0R-3gyIS_djaWQ-fOS9ZyjQ; u=271689766418619; device_id=85fe3280c6b31edcc015c85ae7d9fe9f; Hm_lvt_1db88642e346389874251b5a1eded6e3=1689766420; s=bt11txvrd2; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1689767865',
# User-Agent 用户代理 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
# 发送请求 <被封IP了, 就可以加IP代理> proxies IP代理
response = requests.get(url=url, headers=headers)
# for循环遍历 列表里面元素一个一个提取出来
for index in response.json()['data']['list']:
# 字典键值对取值就可以了
dit = {
'股票代码': index['symbol'],
'股票名称': index['name'],
'当前价': index['current'],
'涨跌额': index['chg'],
'涨跌幅': index['amplitude'],
'年初至今': index['current_year_percent'],
'成交量': index['volume'],
'成交额': index['amount'],
'换手率': index['turnover_rate'],
'市盈率(TTM)': index['pe_ttm'],
'股息率': index['dividend_yield'],
'市值': index['float_market_capital'],
# 格式化输出
'详情页': f'*****/S/{index["symbol"]}',
}
csv_writer.writerow(dit)
print(dit)
数据可视化
import pandas as pd
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
df = pd.read_csv('data.csv')
df.head()
top10 = df[['股票名称', '当前价']].sort_values('当前价', ascending=False)[:10]
names = list(top10['股票名称'])
counts = list(top10['当前价'])
from pyecharts import options as opts
from pyecharts.charts import Bar
c = (
Bar()
.add_xaxis(names)
.add_yaxis("", counts)
# .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
title_opts=opts.TitleOpts(title="股票数据分析", subtitle="股票当前价Top10"),
)
# .render("bar_rotate_xaxis_label.html")
)
c.load_javascript()
top10 = df[['股票名称', '成交量']].sort_values('成交量', ascending=False)[:10]
names = list(top10['股票名称'])
counts = list(top10['成交量'])
from pyecharts import options as opts
from pyecharts.charts import Bar
源码、解答、教程等加V:qian97378免费领取
c = (
Bar()
.add_xaxis(names)
.add_yaxis("", counts)
# .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
title_opts=opts.TitleOpts(title="股票数据分析", subtitle="股票成交量Top10"),
)
# .render("bar_rotate_xaxis_label.html")
)
c.render_notebook()
top10 = df[['股票名称', '涨跌额']].sort_values('涨跌额', ascending=False)[:10]
names = list(top10['股票名称'])
counts = list(top10['涨跌额'])
from pyecharts import options as opts
from pyecharts.charts import Bar
c = (
Bar()
.add_xaxis(names)
.add_yaxis("", counts)
# .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
.set_global_opts(
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
title_opts=opts.TitleOpts(title="股票数据分析", subtitle="股票涨跌额Top10"),
)
# .render("bar_rotate_xaxis_label.html")
)
c.render_notebook()
好了,今天的分享就差不多到这里了!
完整代码、更多资源、疑惑解答直接点击下方名片自取即可。
对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
最后,宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀