Python获取所有股票代码以及股票历史成交数据分析
一个,股票代码明白
我最近进入股票市场。我只是觉得自己已经长很多,但是韭菜仍然被残酷地收获。所以我考虑了一下。让我们看看所有股票数据的资金。趋势,类似于Dragon Tiger Board股票代码,但跨度更大。
我查看了Internet上的一些资源,发现我没有想要的东西。最好的文件被分成多个文件,没有对应的股票代码,所以我制作了EXCEL集成版本。
首先,我们从以下位置获得相应的股票:
方法1:
CTRL + C和CTRL + V是我们通常所说的CV工程师,将它们复制到EXCEL,然后执行数据处理,清理它们并将它们放在TXT中,以准备以下股票信息。
方法2:
多次从此网页元素中获取股票代码,发现股票代码尚未完全爬网。可以推断出网页可能是异步加载的,这意味着在不滚动网页的情况下数据获取是不完整的。是的,因此您需要使用Python。使用selenium + webdriver爬网动态网页的内容。本文已经写得很详细。
如果您想了解从相关静态网页中获取数据的方法和解析过程,可以查看代码以及对Python进行爬网的详细分析,该爬虫是我之前写的百度搜索的标题和真实URL的
获取股票的代码如下:
from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
import csv
import os
file=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()
由于网页的修改,上部代码无效,以下部为准。以下网址删除了一些无用的数据
import requests
import pandas as pd
import time
import json
import os
import csv
import numpy as np
file=r'D:\Users\xinpengxu\Desktop\stock_data.csv'#生成文件路径
filename=r'D:\Users\xinpengxu\Desktop'
def get_json(url): # 获取JSON
try:
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中,手动进行重复数据删除,按列排序以获得代码很好),执行重复数据删除,按列排序两次。
后续数据替换的原因与下一篇文章中使用的股票代码数据有关。将sz替换为0.,将sh替换为1.。将其另存为txt文件股票代码,将在第二篇文章中使用。相关股票代码个数据
后续文章:Python获取所有股票代码和股票历史交易数据分析(二)