Python获取所有股票代码以及股票历史成交数据分析
一 、股票代码获取
最近入坑股市,摸爬滚打,只觉得自己长高了一茬,依旧是韭菜被无情收割呜呜呜呜,因此想了想弄个,所有股票的数据来看下资金动向,类似于龙虎板但是跨度大些。
从网上看了些资源发现并没有自己想要的,最好的一个也是多个文件拆分开的而且没有相应股票的代码,所以我弄了个EXCEL整合版本。
首先我们从http://quote.eastmoney.com/stock_list.html获取相应股票:
方法一:
CTRL+C 以及CTRL+V 也就是我们常说的CV工程师,复制下到EXCEL然后进行下数据处理 处理干净放到TXT里面为后面的股票信息做准备。
方法二:
多次从这个网页元素获取股票代码,发现股票代码抓取不全,可以推测该网页可能是异步加载,就是说不进行翻滚网页情况下数据获取是不全面的,因此需要用到 Python 使用selenium+webdriver爬取动态网页内容这篇文章已经写得很详细了
如果想了解相关的静态网页获取数据的方法以及解析过程可以看我之前写的Python爬取百度搜索的标题和真实URL的代码和详细解析
获取股票的代码如下:
from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
import csv
import osfile=r'C:\Users\xxp\.spyder-py3\testcode\test\stock_data.csv'#生成文件路径def 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:writer.writerow(data)print("保存文件成功,处理结束")def get_info():total_title=[]total_content=[]total_info=[]url = 'http://quote.eastmoney.com/stock_list.html'#r = s.get(url=url)#r.encoding = 'GBK'driver = webdriver.Chrome()r = driver.get(url)soup = BeautifulSoup(driver.page_source, 'html.parser')#print(soup)for n in range(0,7500,2500):driver.execute_script('window.scrollBy(0,'+ str(n) +')')#进行页面翻滚for so in soup.select('#quotesearch ul a'):#print(so)g_title = so.get('href')#print(g_title)#print(g_title)g_content=so.get_text().strip()#根据分析标题无对应标签 只能获取标签内文字 去掉换行和空格#print(g_content)#print(g_title,g_content)total_title +=[g_title]total_content +=[g_content] # print (total_title)# print (total_content)total_info=zip(total_title,total_content)#合并print (total_info)if os.path.exists(file): #文件检测 data_write_csv(file,total_info)# 进行excel写入else: #文件不存在就创建df=pd.DataFrame(data=total_info,columns=['title','内容'])df.to_csv(file,index=False,encoding='utf_8_sig')print ('文件创建成功')if __name__ == '__main__':get_info()
上面部分代码因网页被修改已失效,已下面部分为准,下面URL已删除部分无用数据
import requests
import pandas as pd
import time
import json
import os
import csv
import numpy as npfile=r'D:\Users\xinpengxu\Desktop\stock_data.csv'#生成文件路径
filename=r'D:\Users\xinpengxu\Desktop'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_info(result): # 获取某个股票的信息 result 为dict类型items_all=[]items_finish=[]#"序号 代码 名称 相关链接 最新价 涨跌幅 涨跌额 成交量(手) 成交额 振幅 最高 最低 今开 昨收 量比 换手率 市盈率(动态) 市净率\n"all_name= result.get("data").get("diff") #list类型for i in range(0,len(all_name)-1): #数组长度限定30交易日内数据item = all_name[i] #获取数据 dict类型items_all+=[item['f12'],item['f14']]for i in range(0, len(items_all), 2):#转成二维数组items_finish.append(items_all[i:i+2]) #print(items_finish[1])#下述注释部分为方法二 也可以取得数据 方法主要是为了后续我做数据库存写操作方便些# if os.path.exists(filename):#文件路径检测# #print("path exists")# df=pd.DataFrame(data=all_name,columns=['f12','f14'])# df['f12'] = '#' + df['f12'] #防止0在保存时候被去除# df.to_csv(file,index=False,encoding='utf_8_sig')# print ('文件创建成功')# else:# os.makedirs(filename)# print('create path success')# return ''if os.path.exists(filename):#文件路径检测#print("path exists")df=pd.DataFrame(data=items_finish,columns=['code','name'])df['code'] = '#' + df['code'] #防止0在保存时候被去除df.to_csv(file,index=False,encoding='utf_8_sig')print ('文件创建成功')else:os.makedirs(filename)print('create path success')return ''def main():url = 'http://31.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152'# 1591683995 为时间戳 #此部分url删减了部分不需要的内容stock_info=get_json(url)#获取json数据#print(stock_info)get_stock_info(stock_info)#对数据进行处理if __name__=='__main__': #在其他文件import这个py文件时,不会自动运行主函数main()
生成数据后,进行数据清洗(excel里面自己手动下就好了 去重 、分列 获取代码 ) 进行去重、2次分列即可
后续进行数据的替换原因在下一篇文章所用到的股票代码数据相关,sz替换成0. sh替换成1. 存成txt文档,后续第二篇文章会用到相关股票代码数据
后续文章:Python获取所有股票代码以及股票历史成交数据分析(二)
Python获取所有股票代码以及股票历史成交数据分析相关推荐
- Python获取所有股票代码以及股票历史成交数据分析(二)
接上一篇获取完股票代码信息后,我们打开东方财富网,一通瞎点,进到某股票的K线板块 打开调试界面,XHR中并没有我们想要的数据,从网页数据加载来看应该不是实时资源的肯定有个传输的地方,我们先清空完所有N ...
- python 爬取财经新闻股票_70行python代码爬取新浪财经中股票历史成交明细
70行python代码爬取新浪财经中股票历史成交明细 发布时间:2018-07-28 01:55, 浏览次数:635 , 标签: python 最近在研究股票量化,想从每笔成交的明细着手,但历史数据的 ...
- R语言:批量获取指定股票代码的股票数据
目的是批量获取大量指定股票代码的股票数据,最后结果要求保存在csv文件中,由于有些股票代码是没有的,所以在获取过程中会导致出错,跳出循环.这里的处理方式是用tryCatch函数,并设定一定的等待时间, ...
- Python获取全部股票代码信息(A/B/H/美/英股)
# 保存股票信息至本地 def save_stocks():all_stocks = target_util._get_all_stocks()with open ("stock.csv&q ...
- 70行python代码爬取新浪财经中股票历史成交明细
最近在研究股票量化,想从每笔成交的明细着手,但历史数据的获取便是一个大问题,一些股票证券软件又不能批量导出成交数据.所以,我花了两天时间,成功的从新浪财经爬取了我要的数据 下面开始 新浪股票明细数据接 ...
- python获取期货数据_股票超过压力位
压力位压力位和支撑位一般有几种情况 1.均线压力位和支撑位 2.高点和低点的压力位和支撑位 3.跳空缺口的压力位和支撑位 1.均线压力位和支撑位,这个是我们常说的. 以600005为例,该股目前均线的 ...
- 如何用python获取和保存B站历史播放记录
为什么要保存 B 站视频的播放记录呢? 因为 B 站的历史记录,最多保存 3 个月,超过 3 个月自动清除.所以我专门写一个脚本,将历史记录导出,保存在数据库中,一来是是以备以后需要时能够找到,二来也 ...
- [股票预测]股票历史数据获取
目 录 一.编程环境准备 第一步:安装Anaconda3 第二步:安装工具包Pandas.tushare 第三步:查看Pandas.tushare版本 二.股票历史行情数据提取 2.1获取近3年个股 ...
- python程序化 k线指定时间更新_Python获取股票历史、实时数据与更新到数据库
要做量化投资,数据是基础,正所谓"巧妇难为无米之炊" 在免费数据方面,各大网站的财经板块其实已提供相应的api,如新浪.雅虎.搜狐...可以通过urlopen相应格式的网址获取数据 ...
最新文章
- 编译httpd-2.4.46的RPM包
- 运维调试记录:Opendaylight铍版本开发环境搭建流程
- 透过 3.0 Preview 看 Dubbo 的云原生变革
- 阿里云 AI 编辑部获 CCBN 创新奖,传媒行业解决方案背后的黑科技
- Extjs ComboBox常用的配置
- MySQL复制篇之---半同步复制
- 《未来简史》读书笔记
- Git - git push origin master 报错的解决方法 出现[rejected] master -」 master (non-fast-forward)问题解决
- win10专业版如何快速恢复出厂设置的方法
- 计算机课睡觉检讨书,上课睡觉检讨书范文三篇
- xp mysql 5.6安装版下载地址_xp系统安装版下载,xp系统安装版下载地址
- 如何用禅道写出一份让开发惊叹的测试用例?测试用例库了解一下
- 【Sprint3冲刺之前】敏捷团队绩效考核(刘铸辉)
- CentOS版本的Linux的安装
- 安全合规/GDPR--24--研究:GDPR合规体系设立与执行
- Watering Grass——UVA10382
- 使用 pkg 打包 node服务端 项目
- php民主评议源码,校园表白墙php源码
- Flume 尚硅谷2019
- vb6压缩Access数据库使用JRO.JetEngine