@抓取金融市场数据

A股市场的关键数据

如果不是做短线,在一天内拼瞬时交易锁定投机收益。那每天只取一份数据就可以,用长时间的历史数据做决策分析(机会选择、持有收益计算,及交易策略的评估)。

个股数据与数据源

对于个股数据,可以拆分为个股基本属性信息和历史交易信息。
个股基本信息:可以包括行业、市值、利润、市盈率等中长期属性,这一部分季度/半年一看即可,不用抓取最新。
(从天天基金网抓取)

历史交易数据:每天要抓取最新的数据,累积至少5年的数据(我从2015.01.01开始,抓取5年的数据,网易提供了方便的数据获取接口,从网易可以获得任意长的历史数据,经过比较各家,个股历史数据的抓取还是163最好用)

python准备

工欲善其事必先利其器,数据抓取主要是从各种第三方抓,由于还是非付费用户,所以便捷高效的API是没有,各种网页解析而已。
这部分主要用了requests库和beautifulsoup页面解析库,拿来pip安装一下,然后import即可。
由于有些网页必须渲染后才能抓取,所以也引入了requests-html库,第一次使用的时候会下载一个浏览器内核。

抓取功能封成了function,后续可重用,高级的工具出来也方便替换。
有的网页涉及到动态技术需要渲染后才能抓到我们想要的信息,这部分抓取也要慢一些,单独做了封装。

#外部数据抓取引用库
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession#渲染抓取页面
def get_html_page_render(url):try:session=HTMLSession()r = session.get(url)r.html.render()session.close()return r.html.htmlexcept:return ""#直接抓取页面
def get_html_page(url):try:rtime=0res=""#重试次数最大为8while len(res)==0 and rtime<8:#print("get url",url,rtime)r=requests.get(url,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingres=r.textrtime=rtime+1r.close()return resexcept:print("err",url)return ""

获取所有股票列表

A股全集的获取,经过各家评估,选择用天天基金网。
http://quote.eastmoney.com/stock_list.html
用requests直接做页面解析即可。

#抓取A股票列表,写入文件
def get_stock_list_in_file(filename):stock_list_url='http://quote.eastmoney.com/stock_list.html'#抓取网页获得HTML codehtm=get_html_page(stock_list_url)fout = open(filename,"w")#istock=stock()soup=BeautifulSoup(htm, "html.parser")tags=soup.find_all('a',target="_blank")iget=0for tag in tags:str=tag.attrs['href']#通过正则从STRING中抽取CODE股票代码match=re.search(r's[hz]\d{6}', str)if not match:continuecode=match.group(0)iget=iget+1fout.write(code+"\n")fout.closereturn iget

得到一个A股的全集列表,其中其实有不少已经退市的,还有各种指数,杂质比较多,不见得都能取得历史数据,可以算做一个大BASE吧。
一行一个CODE,大约5K条。
这里抓取的股票代码上海的带"sh"前缀,深圳的带"sz"前缀,在163获取个股历史数据的时候需要做些处理。

抓取个股历史交易信息

网易163的数据接口免费而且可以获取任意长的历史数据,堪称免费版本最良心。
不够个股编码有些不同,根据上面抓取的sh/sz标,在163抓取的时候需要做一些代码变换。具体规则大概是上海前面加“0”,深圳前面加“1”。

url举例:
http://quotes.money.163.com/service/chddata.html?code=0000300&start=20151219&end=20201108&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;VOTURNOVER
换掉code为股票代码,换掉start/end为起止日期,字段按需可选。

TAG 意义
TCLOSE 收盘价
HIGH 最高价
LOW 最低价
CHG 涨跌额
PCHG 涨跌幅
TURNOVER 换手率
VOTURNOVER 成交量
VATURNOVER 成交金额
TCAP 总市值
MCAP 流通市值
#获取a股个股最新历史数据,最新在最前,每行为一天的数据
#format:DATE,收盘价,最高价,最低价,涨跌额,涨跌幅,换手率,成交量,成交金额,总市值,流通市值
#return:iget抓取到的行数
def get_stock_163_history(code):#编码转换org_code=codencode=code.replace("sh","0")nncode=ncode.replace("sz","1")#抓取到当前日期latest_date = datetime.date.today()time_str=latest_date.strftime("%Y%m%d")url='http://quotes.money.163.com/service/chddata.html?code='+nncode+'&start=20150101&end='+time_str+'&fields=TCLOSE;HIGH;LOW;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'iget=0r=requests.get(url)line=str(r.content)#指定抓取到存储的文件名,每个个股一个文件 filename='../data/'+org_code+'.his'fout=open(filename,"w")# 解析抓取回来的数据,格式化存储lines = line.split("\\n")for i in range(1,len(lines)):lines[i]=lines[i].replace("\\r","")res=lines[i].split(",")#如果列数不足,则此行格式有误,丢弃if len(res)>11:fout.write(res[0])for j in range(3,len(res)):fout.write("\t"+res[j])fout.write("\n")fout.flush()iget=iget+1fout.closereturn iget

抓取的每一个CODE,一个独立存储的文件,每行是一天的数据,第一列是日期。

大盘指数

a股的主要指数也都可以通过163的接口获得,指数的列表信息可以从天天基金网获取:
http://quote.eastmoney.com/center/hszs.html
指数很多,其实关键就看几个就行,比如沪深300,相当于把握大盘。

000001  上证指数,上证综合       sh000001
399001  深证成指        sz399001
000300  沪深300 sh000300
399005  中小板指        sz399005
399006  创业板指        sz399006
000010  上证180 sh000010
000016  上证50  sh000016
000009  上证380 sh000009
000132  上证100 sh000132
000133  上证150 sh000133
000003  B股指数        sh000003
000012  国债指数        sh000012
000905  中证500 sh000905

以上是我抓的几个常用指数,用来看看大盘、决策指数基金应该差不多啦。

待续,
后面还有抓基金的。
在动荡和不可解释的A股市场,没有内幕消息的小玩家先从货币基金和指数基金入手,再成熟点可以选些优质基金,让优秀的基金经理帮咱赚钱呀。

python抓取A股市场历史数据(个股、指数)相关推荐

  1. python 抓取电脑界面_学会了Python,我的人生跟开挂一样

    当代职场年轻人的抑郁,有千百种. 一边是加不完的班.完不成的KPI.大把掉落的头发,一边是今年严峻的就业形势,职场人面临的工作压力可想而知. 忙碌的生活不仅磋磨了锐气,也让人觉得,自己仿佛永远没有真正 ...

  2. python数据分析实例:python抓取课工厂网站数据和分析

    在线教育网站学习,是很多人利于闲余时间进行充电的一种选择.本篇文章利用python抓取在线教育网站课工场课程页面的数据,进行简要分析. 通过使用requests库对课工场课程列表页进行抓取. 通过Be ...

  3. python抓取网页文章_使用Python从公共API抓取新闻和文章

    python抓取网页文章 Whether you are data scientist, programmer or AI specialist, you surely can put huge nu ...

  4. 哪些小学在普及python了_小学生在网吧用python抓取LOL英雄皮肤,步骤简单

    你也许或一定玩过LOL英雄联盟,但你一定没有尝试过用Python抓取LOL的各种英雄皮肤. 随着python在中小教育中的普及,就连小学生也开始能用python抓取LOL英雄皮肤了,不得不说,这以后买 ...

  5. python抓取知乎热榜

    知乎热榜讨论话题,https://www.zhihu.com/hot,本文用python抓取下来分析 #!/usr/bin/python # -*- coding: UTF-8 -*-from url ...

  6. python代码案例详解-我用Python抓取了7000 多本电子书案例详解

    安装 安装很简单,只要执行: pip install requests-html 就可以了. 分析页面结构 通过浏览器审查元素可以发现这个电子书网站是用 WordPress 搭建的,首页列表元素很简单 ...

  7. python抓取头条文章

    python抓取头条美文并存储到mongodb # Author:song from multiprocessing import Pool from urllib.parse import urle ...

  8. 微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”...

    微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友 ...

  9. python爬虫保存图片到指定文件夹_李亚涛:python抓取某房源户型图并自动保存到文件夹...

    大家好,今天来给大家分享一下如何抓取某房产网站房源户型图的所有图片,而且自动以房源名称命名一个文件夹,把所有图片放到文件夹中. 大概的思路是: 1.获取网页源代码 2.获取图片地址与房源名称 3.在当 ...

最新文章

  1. 你需要了解的load和initialize
  2. php for 写入多行数据库,php – MYSQL意外插入多行
  3. mysql动态sql循环语句_mysql存储过程循环遍历sql结果集,并执行动态sql
  4. 前端要凉?微软开源Sketch2Code,草图秒变代码
  5. MobX基础 ----- 类的静态属性和装饰器
  6. java同事只有竞争吗_如何防止同事竞争破坏公司文化
  7. 计算机逻辑判断函数,Excel函数:逻辑判断IF函数如何使用,涨知识了
  8. Java中的锁原理、锁优化、CAS、AQS
  9. 07. 用两个栈实现队列(C++版本)
  10. 关于垂直列行值转成水平行值及多列值转合并成单列值
  11. 《统计学习方法》——逻辑斯蒂回归
  12. [BZOJ 4589] Hard Nim
  13. java导出excel_Java导出excel【复制粘贴直接用】
  14. [原创]jQuery的this和$(this)
  15. 如何自学通过PMP?
  16. 在Win7系统中如何安装PDF虚拟打印机
  17. python实现黑客帝国动画效果
  18. 谷歌输入法linux下载官网下载软件,linux下安装谷歌拼音输入法
  19. spring定时器的使用
  20. 联想笔记本怎么进入pe系统_联想笔记本怎么进入bios设置u盘启动新方法

热门文章

  1. 服务器系统盘满了(解决方法)
  2. 优秀课件笔记之视听巧记汉英成语2
  3. 图像的压缩算法--尺寸压缩、格式压缩和品质压缩
  4. prf###.tmp临时文件导致磁盘资源不足
  5. 百度刚刚晋升的29岁最年轻副总裁李明远
  6. 2018海康威视前端面经
  7. 最小费用最大流算法 网络流
  8. 模拟器链接appium
  9. 817自动控制原理-2-关于阻尼
  10. 鲲鹏云服务器运行python项目_鲲鹏云实验-Python+Jupyter机器学习基础环境