使用python来玩一次股票代码详解

目录
  • 准备工作
  • 获取数据部分
    • 爬虫的基本流程
      • 代码实现
      • 发送请求
      • 获取数据
      • 解析数据
      • 保存数据

准备工作

我们需要使用这些模块,通过pip安装即可。

后续使用的其它的模块都是Python自带的,

不需要安装,直接导入使用即可。

requests:      爬虫数据请求模块
pyecharts:     数据分析 可视化模块
pandas:        数据分析 可视化模块里面的设置模块(图表样式)

获取数据部分

爬虫的基本流程

思路分析

采集什么数据?怎么采集?

首先我们找到数据来源

代码实现

我们想要实现通过爬虫获取到数据,正常情况下有几个步骤:

发送请求获取数据解析数据保存数据

接下来我们来看代码 代码展示

导入需要使用的模块

import requests     # 数据请求模块
import csv          # 表格模块

发送请求

通过response模块来访问需要获取数据的地址

url = 'https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz'
requests.get(url=url)

需要使用 cookie 来伪装一下,

cookie代表着用户身份信息。

当然光cookie是不够的,

咱们再加上当前网页的 user-agent

伪装加好之后,咱们就能得到一个相应结果,

先打印出来看看。

import requests  # 第三方模块
import csv

# 伪装
headers = {
    # 用户身份信息
    'cookie': 's=bq119wflib; device_id=90ec0683f24e4d1dd28a383d87fa03c5; xq_a_token=df4b782b118f7f9cabab6989b39a24cb04685f95; xqat=df4b782b118f7f9cabab6989b39a24cb04685f95; xq_r_token=3ae1ada2a33de0f698daa53fb4e1b61edf335952; xq_id_token=evjkfkyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTY3MjE4Njc1MSwiY3RtIjoxNjcwNTAxMjA5MTEyLCJjaWQiOiJkOWQwbjRBWnVwIn0.iuLASkwB6LkAYhG8X8HE-M7AM0n0QUULimW1C4bmkko-wwnPv8YgdakTC1Ju6TPQLjGuvfudhhMqHuSXqiWdOqVIjy_OMEj9L_HScDot-7kn63uc2lZbEdGnjyF3sDrqGBCpocuxTTwuSFuQoQ1lL7ZWLYOcvz2pRgCw64I0zLZ9LogQU8rNP-a_1Nc91V8moONFqPvjjnWD5Lt3JxqcuyJbmb86OpfJZRycnh1Gjnl0Aj1ltGa4sNGSMXoY2iNM8NB56LLIp9dztEwExiRSWlWZifpl9ERTIIpHFBq6L2lSTRKqXKb0V3McmgwQ1X0_MdNdLAZaLZjSIIcQgBU26T8Z4YBZ39dA; u=511670501221348; Hm_lvt_1db88642e346389874251b5a1eded6e3=1667994737,1670480781,1670501222; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1670501922',

    # 浏览器的基本信息
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}

url = 'https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz'
    # 1. 发送请求
response = requests.get(url=url, headers=headers)

print(response)

运行后出现 <Response [200]>求请求成功,

出现404就是访问不到资源,一般是被反爬了。

所以这时候我们需要加一个 referer 防盗链参数进去

'referer: https://xueqiu.com/hq'

如果加了还不行,

就是自己链接有问题了。

取数据的话 .json 就好了

import requests  # 第三方模块
import csv

# 伪装
headers = {
    # 用户身份信息
    'cookie': 's=bq119wflib; device_id=90ec0683f24e4d1dd28a383d87fa03c5; xq_a_token=df4b782b118f7f9cabab6989b39a24cb04685f95; xqat=df4b782b118f7f9cabab6989b39a24cb04685f95; xq_r_token=3ae1ada2a33de0f698daa53fb4e1b61edf335952; xq_id_tokendjdjfvj=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTY3MjE4Njc1MSwiY3RtIjoxNjcwNTAxMjA5MTEyLCJjaWQiOiJkOWQwbjRBWnVwIn0.iuLASkwB6LkAYhG8X8HE-M7AM0n0QUULimW1C4bmkko-wwnPv8YgdakTC1Ju6TPQLjGhMqHuSXqiWdOqVIjy_OMEj9L_HScDot-7kn63uc2lZbEdGnjyF3sDrqGBCpocuxTTwuSFuQoQ1lL7ZWLYOcvz2pRgCw64I0zLZ9LogQU8rNP-a_1Nc91V8moONFqPWD5Lt3JxqcuyJbmb86OpfJZRycnh1Gjnl0Aj1ltGa4sNGSMXoY2iNM8NB56LLIp9dztEwExiRSWlWZifpl9ERTIIpHFBq6L2lSTRKqXKb0V3McmgwQ1X0_MdNdLAZaLZjSIIcQgBU26T8Z4YBZ39dA; u=511670501221348; Hm_lvt_1db88642e346389874251b5a1eded6e3=1667994737,1670480781,1670501222; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1670501922',
    # 防盗链
    'referer: https://xueqiu.com/hq'
    # 浏览器的基本信息
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}

url = 'https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz'
    # 1. 发送请求
response = requests.get(url=url, headers=headers)

print(response.json())

获取数据

什么是json数据?

以 {}/[] 所包裹起来的数据 {“”:“”, “”:“”}

除了 .json 还可以通过 .text 和 .content 来拿到数据,但是它们获取到的数据是一样。

.text 获取到的是字符串,文本内容。

.content 取到的是二进制数据,一般是图片/音频/视频内容。

json_data = response.json()

解析数据

解析数据就是提取数据,把我们想要的数据提取出来。

没学过字典的小伙伴,可以先学一下字典。

data_list = json_data['data']['list']
# data_list[0]
# data_list[1]
for i in range(0, len(data_list)):
    symbol = data_list[i]['symbol']
    name = data_list[i]['name']
    current = data_list[i]['current']
    chg = data_list[i]['chg']
    percent = data_list[i]['percent']
    current_year_percent = data_list[i]['current_year_percent']
    volume = data_list[i]['volume']
    amount = data_list[i]['amount']
    turnover_rate = data_list[i]['turnover_rate']
    pe_ttm = data_list[i]['pe_ttm']
    dividend_yield = data_list[i]['dividend_yield']
    market_capital = data_list[i]['market_capital']
    print(symbol, name, current, chg, percent, current_year_percent, volume, amount, turnover_rate, pe_ttm, dividend_yield, market_capital)

保存数据

csv_writer.writerow([symbol, name, current, chg, percent, current_year_percent, volume, amount, turnover_rate, pe_ttm, dividend_yield, market_capital])

数据可视化分析

导入需要使用的模块

import pandas as pd         # 做表格数据处理模块
from pyecharts.charts import Bar    # 可视化模块
from pyecharts import options as opts   # 可视化模块里面的设置模块(图表样式)

读取数据

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")

到此这篇关于使用python来玩一次股票代码详解的文章就介绍到这了,更多相关Python实战项目内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实战项目之MySQL tkinter pyinstaller实现学生管理系统

    终极版终于有时间给大家分享了!!!. 我们先看一下效果图. 1:登录界面: 2:查询数据库所有的内容! 3:链接数据库: 4:最终的打包! 话不多说直接上代码!!!! from tkinter import * import pymysql from tkinter.messagebox import * from tkinter import ttk def get_connect(): conn = pymysql.connect(host='localhost', user="root&q

  • 分享7个 Python 实战项目练习

    目录 1.抓取知乎图片,只用30行代码 2.听两个聊天机器人互相聊天 3.分析唐诗的作者是李白还是杜甫 4.彩票随机生成35选7 5.自动写检讨书 6.屏幕录相机,抓屏软件 7.制作Gif动图 但是问题有三个: 1.我们不知道已经有哪些轮子已经造好了,哪个适合你用.有名有姓的的著名轮子就400多个,更别说没名没姓自己在制造中的轮子. 2.确实没重复造轮子,但是在重复制造汽车.包括好多大神写的好几百行代码,为的是解决一个Excel本身就有的成熟功能. 3.很多人是用来抓图,数据,抓点图片.视频.天

  • python实战项目scrapy管道学习爬取在行高手数据

    目录 爬取目标站点分析 编码时间 爬取结果展示 爬取目标站点分析 本次采集的目标站点为:https://www.zaih.com/falcon/mentors,目标数据为在行高手数据. 本次数据保存到 MySQL 数据库中,基于目标数据,设计表结构如下所示. 对比表结构,可以直接将 scrapy 中的 items.py 文件编写完毕. class ZaihangItem(scrapy.Item): # define the fields for your item here like: name

  • Python实战项目用PyQt5制作漫画脸GUI界面

    目录 最终效果 前言 1.PyQt5的安装. 1.PyQt5库的安装. 2.qt designer 布局的使用. 1:打开这个设计师 2:创建一个窗口 3:设计界面,用鼠标拖动左边的控件. 4:ui转化为py 5:在python上面运行转化后的py文件 6:运行py文件 3.百度智能云api的调用. 4.调控界面的控件. 5.最终成果 6.总结 最终效果 前言 这是最近在学qt这个东西,然后又学会了调用api,然后就想了用pyqt5做一个GUI界面,后期也可以打包分享给其他人使用,所以就最近就写

  • 十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)

    话不多说,直接开搞! 练习项目一:即时标记 补充utils.py: 练习项目二:画幅好画 练习项目三:万能的XML 练习项目四:新闻聚合 练习项目五:虚拟茶话会 clinet.py 来看代码: 练习项目六:使用CGI进行远程编辑 edit.cgi,用来接受index页面的名字,然后根据名字查找文件,并且输出. 最后一个文件save.cgi: 练习项目七:自定义公告板 view.py edit.py save.py 练习项目八:使用XML-RPC进行远程文件共享 client.py: 练习项目九:

  • python游戏实战项目之童年经典超级玛丽

    导语 "超级玛丽"--有多少人还记得这款经典游戏?那个戴帽子的大胡子穿着背带裤的马里奥! 带您重温经典的回忆,超级马里奥拯救不开心!炫酷来袭. 如果您的童年,也曾被魔性的 灯~灯灯~灯~灯灯~灯洗脑~那就来怀旧一番吧! 我是华丽的分割线------------------------------ 往期写过游戏实战已经积累到30几篇了哦~嘿嘿,推一波之前的,狗头保命.jpg. 欢迎大家来领免费的游戏,开玩啦~源码可以直接找我拿滴! 在座的各位大佬,你们都玩过这里面的几个游戏吖? ​ 往期

  • python游戏的魅力之冒险岛实战项目

    目录 导语 正文 效果图: 总结 导语 ​哈喽哈喽!我是木木子. 新的一天又开始了~ ​ 是的,今天是大工程,​又到了每日更新游戏环节,你们有期待吗? ​ 想了很久,这游戏估计你们也没玩过,比较少见吧!最近家里的孩子一直在沉迷<梦幻国度>. 让他见识下python的魅力,能学习也能做游戏的.不能一直玩撒~学习也很重要嘛 今天想说我们直接开始制作一款Python玛丽冒险岛游戏~ 正文 ​ ​(1)环境安装部分: Python版本:Python 3.6 开发工具:PyCharm.Python内置模

  • python爬虫实战项目之爬取pixiv图片

    自从接触python以后就想着爬pixiv,之前因为梯子有点问题就一直搁置,最近换了个梯子就迫不及待试了下. 爬虫无非request获取html页面然后用正则表达式或者beautifulsoup之类现成工具截取我们想要的页面,pixiv也不例外. 首先我们来实现模拟登陆,虽然大多数情况不需要我们实现模拟登录,但如果你是会员之类的,登录和不登录网页就有区别.思路是登录时抓包抓到post请求,看pixiv构建的post的数据表格是什么格式,我们根据这个格式构建form,然后调用post方法去请求,再

  • Python实战项目刮刮乐的实现详解流程

    目录 导语 正文 1)环境安装 2)正式敲代码 2.1定义必要常量 2.2设置随机读取图片 2.3主程序 3)效果图展示 3.1 part 随机图一 3.2 part 随机图二 3.3 part 随机图三 总结 导语 在CSDN学习的过程中,遇到了爆火的文章是关于刮刮卡的! 大家猜猜看是谁写的? 我看这文章都特别火,我也感觉挺好玩的,那就寻思用 Python肯定也能做呀! 这不?今天还有时间,那就带大家写一款刮刮乐的小程序吧~ 正文 1)环境安装 准备好Python3.Pycharm.Pygam

  • Python PyQt5实战项目之网速监控器的实现

    目录 简介 psutil模块使用 主界面 网速线程 全部代码 成果展示 简介 看到了一个能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息的模块–psutil模块.这次利用psutil.net_io_counters()这个方法. psutil模块使用 >>> psutil.net_io_counters() # 获取网络读写字节/包的个数 snetio(bytes_sent=16775953, bytes_recv=712657945, packets_s

随机推荐