接上一篇获取完股票代码信息后,我们打开东方财富网,一通瞎点,进到某股票的K线板块
打开调试界面,XHR中并没有我们想要的数据,从网页数据加载来看应该不是实时资源的肯定有个传输的地方,我们先清空完所有Network的资源

然后把鼠标放到K线上可以从后台再次获取传输数据,
获取到数据立刻按按钮暂停获取,不然数据增多影响我们排查数据获取的Url,很快我们就可以查到JSON数据的url

该JSON数据获取地址的url为:http://56.push2his.eastmoney.com/api/qt/stock/kline/get?cb=jQuery1124035595705046364756_1592285193048&secid=1.600037&ut=fa5fd1943c7b386f172d6893dbfba10b&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58&klt=101&fqt=0&end=20500101&lmt=120&_=1592285193152

首先我们能确认是个get请求方式,我们可以采用python代码进行提交参数的拆解,也可以肉眼拆解,


可以发现地址栏的jQuery与网页输出的部分数据相对应股票代码为secid,但secid多了1. (此部分我们拿不同证券试验可以知道 深股为0. 上证为1. 开头 )。
我们去掉jQuery看能否获取数据,

可以看到可以获取到相关的数据,而且变得干净了不少,后续我们一个个拆解看有哪些没用的提交参数。
观察完页面和数据,我们来着手代码部分,首先从上一篇获取股票代码的文章我们已经拿到所有股票代码,需要进行股票代码输出

def get_stock_code():#stock=['0.002415','0.000063']#深的股票为0. 上证为1.开头 加上对应股票代码stock=[]with open (file_stock,'r') as f:for i in f.readlines():if i !=None:stock.append(i.strip("\n"))  #print(stock)if stock:   return stock #返回股票代码else:return stock

接着进行网页数据获取

def get_json(url):  # 获取JSONtry:r=requests.get(url)  # 抓取网页返回json信息r.raise_for_status()r.encoding = 'utf-8'#print(r.json())#with open(r"C:\Users\xxp\.spyder-py3\testcode\tmp.txt", "w") as fp:#fp.write(json.dumps(r.json(),indent=4,ensure_ascii=False)) # txt测试是否成功获取网页return r.json()except:return 'false'

进而可以写出获取股票代码对应的JSON数据文件的代码:

def main():stock=get_stock_code()start= time.time()#print(num)for code in stock:  # 获取每个股票的数据url = 'http://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf61&klt=101&fqt=1&secid='+str(code)+'&beg=0&end=20500000&_=1591683995756'# 1591683995 为时间戳 #此部分url删减了部分不需要的内容stock_info=get_json(url)#获取json数据get_stock_info(stock_info)#对数据进行处理time.sleep(3)# 暂停3秒,防止被服务器拉黑print('总耗时:' ,time.time()-start)    

最后进行获取数据的整合,填充股票名称和股票代码,放入一个EXCEL中方便分析,总体代码如下:

import requests
import pandas as pd
import time
import json
import os
import csv
import numpy as npfile_stock=r'C:\Users\xxp\.spyder-py3\testcode\test\stock.txt' #股票代码txt
filename=r'C:\Users\xxp\.spyder-py3\testcode\test'#生成文件夹路径
file=r'C:\Users\xxp\.spyder-py3\testcode\test\stock.csv'#生成文件路径class ClassName: # 构建类似static函数 python没有静态 只能自己构建COUNT=0def __init__(self, static):self.static = staticClassName.COUNT+=1 def get_json(url):  # 获取JSONtry:r=requests.get(url)  # 抓取网页返回json信息r.raise_for_status()r.encoding = 'utf-8'#print(r.json())#with open(r"C:\Users\xxp\.spyder-py3\testcode\tmp.txt", "w") as fp:#fp.write(json.dumps(r.json(),indent=4,ensure_ascii=False)) # txt测试是否成功获取网页return r.json()except:return 'false'def get_stock_code():#stock=['0.002415','0.000063']#深的股票为0. 上证为1.开头 加上对应股票代码stock=[]with open (file_stock,'r') as f:for i in f.readlines():if i !=None:stock.append(i.strip("\n"))  #print(stock)if stock:   return stock #返回股票代码else:return stockdef data_write_csv(file, datas):#file为写入CSV文件的路径,datas为要写入数据列表with open(file,'a+',encoding='utf-8-sig',newline='') as f:writer  = csv.writer(f)for data in datas:#print(data)##data_str=','.join(data) #列表拆分成str#data_str=data_str.strip()#print(data_str)writer.writerow(data)print("保存文件成功,处理结束")def get_stock_info(result):  # 获取某个股票的信息try:a_str = result.get("data").get("klines")# json数据对应值获取 报错时候跳过空值s_name= result.get("data").get("name")s_code= result.get("data").get("code")array_str = np.array(a_str) #数组存储#csv_str ="code,name,time,开盘,收盘,最高,最低,成交量,成交额,振幅,换手\n"items_all=[]for i in range(len(array_str)-31,len(array_str)-1): #数组长度限定30交易日内数据item = array_str[i] #获取数据items = item.split(",")#拆分后变成List函数items.insert(0,s_name)items.insert(0,'#'+s_code)#拼接数据items_all.extend([items]) #数组整合#print(items_all)if os.path.exists(filename):#文件路径检测#print("path exists")if os.path.exists(file): #文件检测 data_write_csv(file,items_all)# 进行excel多个股票写入ClassName(1)#调用自己构建的静态函数print('股票数',ClassName.COUNT) #输出调用次数else: #文件不存在就创建df=pd.DataFrame(data=items_all,columns=['code','name','time','开盘','收盘','最高','最低','成交量','成交额','振幅','换手'])df.to_csv(file,index=False,encoding='utf_8_sig')print ('文件创建成功')ClassName(1)#调用自己构建的静态函数print('股票数',ClassName.COUNT) #输出调用次数else:os.makedirs(filename)print('create path success')return ''except Exception as e :return edef main():stock=get_stock_code()start= time.time()#print(num)for code in stock:  # 获取每个股票的数据url = 'http://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf61&klt=101&fqt=1&secid='+str(code)+'&beg=0&end=20500000&_=1591683995756'# 1591683995 为时间戳 #此部分url删减了部分不需要的内容stock_info=get_json(url)#获取json数据get_stock_info(stock_info)#对数据进行处理time.sleep(3)# 暂停3秒,防止被服务器拉黑print('总耗时:' ,time.time()-start)    if __name__=='__main__': #在其他文件import这个py文件时,不会自动运行主函数main()

关于股票代码的获取可以参考我上一篇文章:Python获取所有股票代码以及股票历史成交数据分析
有什么不懂的或者代码可以优化的可以留言沟通,这个代码可以再加入一个获取状态判断400系列,从而进行400相关数据重新获取,以及多线程+多进程方式加快数据的获取。

Python获取所有股票代码以及股票历史成交数据分析(二)相关推荐

  1. Python获取所有股票代码以及股票历史成交数据分析

    一 .股票代码获取 最近入坑股市,摸爬滚打,只觉得自己长高了一茬,依旧是韭菜被无情收割呜呜呜呜,因此想了想弄个,所有股票的数据来看下资金动向,类似于龙虎板但是跨度大些. 从网上看了些资源发现并没有自己 ...

  2. python 爬取财经新闻股票_70行python代码爬取新浪财经中股票历史成交明细

    70行python代码爬取新浪财经中股票历史成交明细 发布时间:2018-07-28 01:55, 浏览次数:635 , 标签: python 最近在研究股票量化,想从每笔成交的明细着手,但历史数据的 ...

  3. 使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情、5日均线、10日均线行情并显示

    使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情.5日均线.10日均线行情并显示 这个文章其实和我的上一篇文章,https://blog.csdn.net/lost0910 ...

  4. R语言:批量获取指定股票代码的股票数据

    目的是批量获取大量指定股票代码的股票数据,最后结果要求保存在csv文件中,由于有些股票代码是没有的,所以在获取过程中会导致出错,跳出循环.这里的处理方式是用tryCatch函数,并设定一定的等待时间, ...

  5. Python获取全部股票代码信息(A/B/H/美/英股)

    # 保存股票信息至本地 def save_stocks():all_stocks = target_util._get_all_stocks()with open ("stock.csv&q ...

  6. 70行python代码爬取新浪财经中股票历史成交明细

    最近在研究股票量化,想从每笔成交的明细着手,但历史数据的获取便是一个大问题,一些股票证券软件又不能批量导出成交数据.所以,我花了两天时间,成功的从新浪财经爬取了我要的数据 下面开始 新浪股票明细数据接 ...

  7. python获取期货数据_股票超过压力位

    压力位压力位和支撑位一般有几种情况 1.均线压力位和支撑位 2.高点和低点的压力位和支撑位 3.跳空缺口的压力位和支撑位 1.均线压力位和支撑位,这个是我们常说的. 以600005为例,该股目前均线的 ...

  8. 如何用python获取和保存B站历史播放记录

    为什么要保存 B 站视频的播放记录呢? 因为 B 站的历史记录,最多保存 3 个月,超过 3 个月自动清除.所以我专门写一个脚本,将历史记录导出,保存在数据库中,一来是是以备以后需要时能够找到,二来也 ...

  9. python获取今日头条搜索信息_python爬虫(十二、爬取今日头条关键词所有文章)

    今日头条 我们以搜索'妹子'为例 那 么 我 们 在 右 上 角 的 搜 索 框 搜 索 妹 子 , 出 来 了 一 系 列 文 章 那么我们在右上角的搜索框搜索妹子,出来了一系列文章那么我们在右上角 ...

最新文章

  1. [PaaS] 深入 Cloud Foundry(一)构架 (转载)
  2. mysql starting server 失败_安装MySQL过程中(最后starting server)报错解决方案
  3. js ie 6,7,8 使用不了 firstElementChild
  4. shfflenetv2代码解读
  5. 裤子换裙子,就问你GAN的这波操作秀不秀
  6. Dephi 的接口与回调 :ZT
  7. Naïve UI——一个 Vue 3 组件库
  8. 网工学Python——初识函数
  9. 学生选课系统的源码---架构图MVC1
  10. 虚拟账户 FTP 服务器不能上传可下载
  11. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)...
  12. 执著如泪,是滴入心中的破碎
  13. uva10158(并查集)
  14. 矩阵树定理--luoguP4208 [JSOI2008]最小生成树计数
  15. PHP人民币小写数字转大写中文
  16. 计算机非全日制硕士 选校,报考攻略:2021年报考非全日制研究生该如何选择院校和专业?...
  17. 基础第三-MySQL-多表查询-索引-事务笔记
  18. Nginx-Lua-FastDFS-GraphicsMagick动态图片缩略图
  19. 《实战数据库营销——大数据时代轻松赚钱之道》新书试读+文摘
  20. 易订宝 移动营销网络订货平台

热门文章

  1. 中国林业产业杂志中国林业产业杂志社中国林业产业编辑部2022年第5期目录
  2. 三维卷轴扭曲变形照片墙AE脚本:Transformer 2 mac版
  3. 分布式系统和网络系统
  4. 苹果x漫画脸_苹果最新iPhone SE:秒杀安卓的小屏旗舰
  5. 下载安装使用Canal
  6. js中break关键字的用法。
  7. 2016华为校招机试题目02
  8. android 编辑说说页面,QQ说说已经发表了怎么修改?
  9. 海外加速,让你拥有和 Steam 一样的高速下载
  10. vivox50支持鸿蒙,vivoX50pro—好马配好鞍,强大的微云台相机