环境如下:
语言:python3.7
IDE: Pycharm-2020.1.1
包环境管理:anaconda 4.8.2
库文件:request, pandas, matplotlib, bs4, pandas_datareader
要连接互联网~~~~

问题:很多小伙伴想用机器学习方法对股票进行量化分析,我们面临的第一个问题是如何获得其历史数据?
如何解决上述问题?使用python爬虫爬取历史数据,或者更确切的说,先爬取股票代码,然后使用pandas_datareader从yahoo上获取该股票的历史数据。该网站可以获取到所有上证股票的股票代码。借鉴蒹葭杰克兄弟的代码,对其代码稍作改进,以方便使用。

  • 获取数据部分
import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader.data as web
import requests
import bs4 as bsdef get_stock_code():res = requests.get('https://www.banban.cn/gupiao/list_sh.html')res.encoding = res.apparent_encodingsoup = bs.BeautifulSoup(res.text, 'lxml')content = soup.find('div', {'class':'u-postcontent cz'})result = []for item in content.findAll('a'):result.append(item.text)return resultdef get_stock_history(stock_name, stock_code, save_dir):#当然你可以在参数里加上起始日期,start_date, end_date,在DataReader()里替换'2012-01-01'和'2020-05-08'if stock_code[-2:] != 'ss':stock_code = str(stock_code) + '.ss'df = web.DataReader(stock_code, data_source='yahoo', start='2012-01-01', end='2020-05-08')df.to_csv(save_dir + '/{}{}.csv'.format(stock_name, stock_code))if __name__=='__main__':stock_name_code = get_stock_code()for i in stock_name_code:print(i)

输出结果如下图所示:

如果需要爬取其中一个股票的历史数据,我们可以利用get_stock_histroy()函数来获取。以包钢股份为例具体的代码如下:

if __name__=='__main__':get_stock_histroy('包钢股份', '600010', dir)#这里dir根据自己要存的地方改写,我使用的centos 8 操作系统,需要存在Desktop,这里dir就可以写成'/home/icedragonliu/Desktop'

输出结果如下图所示:


如果你想下载所有上证股票的数据,那就换下面的代码:

if __name__=='__main__':stock_name_code = get_stock_code()for i in stock_name_code:stock_name = i[:-8]stock_code = i[-7:-1]get_stock_history(stock_name, stock_code, '/home/icedragonliu/Desktop')

Starbucks的网不是很好,先下如下图所示:

  • 画出某个股票(以九鼎投资为例)历史收盘价曲线
    有了数据,我们需要先画出其历史数据来对数据有感性的认识,然后再对其进行分析。我也不知道为啥,kaggle里的大神都是先这样做。
def plot_stock_close_price(stock_price_path, fig_save_path):stock_df = pd.read_csv(stock_price_path)fig = plt.figure(figsize=(12, 8))stock = stock_history_path.split('/')[-1].split('.')[0][-6:]plt.title('{} Closed price'.format(stock))plt.plot(stock_df['Close'], color='blue')plt.xlabel('Date', fontsize=18)plt.ylabel('Close Price ($\yen$)')plt.savefig(fig_save_path + '/{}.png'.format(stock))plt.show()if __name__=='__main__':stock_history_path = '/home/icedragonliu/Desktop/九鼎投资600053.ss.csv'fig_save_path = '/home/icedragonliu/Desktop/picture'plot_stock_close_price(stock_history_path, fig_save_path)

这样我们可以获取如下图片:

这个图片还是有些问题,下一篇在利用股票近60天的收盘价预测其后面一天的收盘价里进行改正。我在使用jupyter notebook时,日期是可以正常显示的。比如新华保险的这个如下图所示:

后面使用keras这个神经网络的库,对历史数据进行学习,训练出一个使用前60日的收盘价预测第二天收盘价的模型玩一玩。

python爬取上证股票的历史记录并画历史收盘图曲线相关推荐

  1. 用Python爬取最新股票数据含完整源代码

    用Python爬取最新股票数据含完整源代码 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 ...

  2. 用python爬取东方财富股票

    ** ## 用python爬取东方财富股票 ** 本代码源于中国大学mooc上的北京理工大学嵩天老师的课程,本人对其代码进行了修改仅供学习交流,菜鸟新手,各位大佬勿喷,有不对的地方多多指出. impo ...

  3. python爬取二手房库存,存数据库,生成折线图(下)

    python爬取二手房库存,存数据库,生成折线图(下) 数据库有了房价的多阶段价格后,即可生成折线图.默认我的数据库已经有很多天的数据了 进入html页面的时候,默认加载房价走势图 在vue 的mou ...

  4. python爬取所有股票报道

    前言 由于毕设是要对股票的新闻报道进行情感分析,所以爬取所有股票的个股资是必要的前提工作了.一开始准备直接在 [东方财富网](http://quote.eastmoney.com/stocklist. ...

  5. Python应用实战-Python爬取4000+股票数据,并用plotly绘制了树状热力图(treemap)

    目录: 1. 准备工作 2. 开始绘图 2.1. 简单的例子 2.2. px.treemap常用参数介绍 2.3. color_continuous_scale参数介绍 2.4. 大A股市树状热力图来 ...

  6. 我的第一篇博客:Python爬取新浪财经股票页面 并用matplotlib可视化输出结果

    (由于疫情在家闲着,开学至少得等到四月份,便在上个星期动起了学习python的念头,凭借着大一C语言微薄的基础草草学习语法后便开始了学写爬虫.跟着教学视频爬了几个静态网站后便开始尝试爬动态网站,同时也 ...

  7. Python爬取所有股票数据并进行数据分析

    一.背景:作为一个程序员,总喜欢在股市里面晃荡,无奈总是当成韭菜收割了.每一次都是卖涨买跌,处处碰壁.但是作为一个有一定阅历的程序员本能告诉自己,只要掌握了大量的股票数据,就可以在信息渠道落后的情况下 ...

  8. python爬取基金股票_爬取天天基金网、股票数据

    1:首先,开始分析天天基金网的一些数据.经过抓包分析,可知: ./fundcode_search.js包含所有基金的数据,同时,该地址具有反爬机制,多次访问将会失败的情况. 2:同时,经过分析可知某只 ...

  9. Python 爬取链家新房 并生成物业类型对比图

    1,爬取网站新房内容 from bs4 import BeautifulSoup import requests import time import pandas as pdheaders = {' ...

最新文章

  1. 深入浅出K-Means算法
  2. python函数参数定义顺序_Python函数定义-位置参数-返回值
  3. 《对Java的分析总结》-Java中的垃圾回收机制中的标记-清除算法 (五)
  4. redis查看连接数
  5. eclipse中maven项目pom文件第一行报错解决方法
  6. python---基础知识回顾(十)进程和线程(协程gevent:线程在I/O请求上的优化)...
  7. 循环问题2012蓝桥杯省赛第四题 奇怪的比赛(暴力解决)
  8. 【Leetcode】101. 对称二叉树
  9. c语言求最长单调子序列,设计一个O(n2)时间算法,找出由n个数组成的序列的最长单调递增子序列...
  10. Matrices(矩阵)
  11. win10 安装虚拟机和乌班图
  12. 最强思维导图训练营教程
  13. typescript - 一种思维方式(推荐阅读)
  14. 在学校图书馆里进入WOS却依然无法搜索文献如何解决?
  15. 垃圾大学,想自学 Java 可以吗?难吗?毕业后能找到一份 6k左右的工作吗?
  16. 什么时候可以找回民族的自尊,不再崇洋媚外?--从华晨老总骏捷发布会的一番话说起...
  17. ‘0’ 和 '\0'
  18. Hadamard积的介绍
  19. mysql查询出过去一个月_mysql查询过去一月半年一年的时间
  20. 剖析Android的Smart Lock

热门文章

  1. mac 关闭系统完整性保护 SIP(System Integrity Protection)的方法
  2. (FortiGate)飞塔防火墙配置AD***
  3. Codeforces Round #717 (Div. 2)(ABCD)
  4. Centos7 安装RVM
  5. 27家中美名校借阅榜对比公开:差别太大了
  6. 网页页面退出检测- 解决unload onbeforunload不好用
  7. 2020 - 2021 年 Web 前端最新导航 - 前端学习资源分享前端面试资源汇总
  8. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
  9. 使用dayjs快速计算 两个日期之间的天数的差值
  10. tomcat实现https双向认证配置