python爬股票申购取股票历史数据

在当时的经济形势下,财经常识的重要性益发凸显。出资者们需求了解市场趋势、方针改变、公司财务等方面的信息,以更好地拟定出资战略。接下来,常识将剖析并了解python爬取股票前史数据,期望能够给你带来一些启示。

本文目录:1、股票池怎样用python构建2、怎样运用python 抓取雪球网页3、python读取财经数据股票池怎样用python构建

答:股票池用python构建的办法是:运用第三方渠道,现在能够运用的是聚宽,比照一下聚宽、优矿、大宽网(现已关闭了),都迥然不同,选哪个都相同。

尽管这些渠道都迥然不同,可是代码可不能简略仿制粘贴,由于底层函数库是不相同的,有可能在其他渠道底子用不了某个函数,而且简略仿制到自己电脑中的python的话百分之百用不了。

代码的思路是,每个月底进行调仓,选出市值最小的股票交易,去掉ST/*ST/停牌/涨停的股票,然后挑选最小市值的10只,基准是创业板综指,看看成果。

python构建数据获取办法是:

这儿运用为了接下来的操作需求将必定前史规模的股票数据下载下来,这儿下载开始时间为20160101,到时间为运转代码的时间规模的前史日线数据。

这儿以tushare为例, tushare获取前史数据有两种办法。

第一种是以迭代前史交易日的办法获取全部前史数据,假定获取三年的前史数据,一年一般220个交易日左右,那么3年需求恳求660屡次左右,假如以这种办法的话,就下载数据的时间只需求1分钟多点的姿态。

第二种是以迭代全部股票代码的办法获取全部前史数据,股票数量有大约3800多个,需求恳求3800屡次,可是在积分有限的状况下一分钟最多恳求500次,也就意味着仅下载数据的时间至少需求大约8分钟时间。

理论上,你获取的前史规模超越17.3年,那么运用第一种办法才比第二种办法快。

怎样运用python 抓取雪球网页答:现在重视一个组合,就会有持仓变化的提示了。不过我觉得这工作挺有意思的。比方能够把许多持仓的数据都抓下来,做一些归纳的剖析,看看现在网站上被持有最多的股票是哪一支,某一天被调入最多的又是哪一支之类。

所以我决议来抓抓看,趁便借此说说我一般用程序做主动抓取的进程。

Step.1 剖析页面

要抓一个网页,首要自然是要“研讨”这个网页。一般我会用两种办法:

一个是 Chrome 的 Developer Tools。经过它里边的 Network 功用能够看到页面宣布的全部网络恳求,而大多数数据恳求都会在 XHR 标签下。点击某一个恳求,能够看到其详细信息,以及服务器的回来成果。许多网站在关于某些数据会有专门的恳求接口,回来一组 json 或许 XML 格局的数据,供前台处理后显现。

另一个便是直接检查网页源代码。一般浏览器的右键菜单里都有这个功用。从页面的 HTML 源码里直接寻觅你要的数据,剖析它格局,为抓取做准备。

关于雪球上的一个组合页面 粗略地看了一下它宣布的恳求,并没有如料想那样直接找到某个数据接口。看源代码,发现有这样一段:

SNB.cubeInfo = {"id":10289,"name":"誓把老刀挑下位","symbol":"ZH010389" .此处略过三千字. "created_date":"2014.11.25"}

SNB.cubePieData = [{"name":"轿车","weight":100,"color":"#537299"}];

cubeInfo 是一个 json 格局的数据,看上去便是咱们需求的内容。一般我会找个格局化 json 的网站把数据仿制进去便利检查。

这应该便是组合的持仓数据。那么接下来,全部好像都简略了。只需直接发送网页恳求,然后把其间 cubeInfo 这段文字取出,按 json 读出数据,就完成了抓取。乃至不必动用什么 BeautifulSoup、正则表达式。

Step.2 获取页面

剖析结束,开抓。

直接 urllib.urlopen 向方针网页发送恳求,读出网页。成果,失利了……

看了下回来成果:

403 Forbidden

You don't have permission to access the URL on this server. Sorry for the inconvenience.

被拒了,所以这种光秃秃地恳求是不可的。不要紧,那就略微包装一下:

send_headers = {

'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36',

'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Connection':'keep-alive',

'Host':'xueqiu',

'Cookie':r'xxxxxx',

}

req = urllib2.Request(url, headers=send_headers)

resp = urllib2.urlopen(req)

html = resp.read()

header 数据都能够从 Developer Tools 里拿到。这次顺畅抓到页面内容。

一般网站或多或少都会对恳求来历做一些阻挠,经过加 header 能够搞定大部分状况。

Step.3 提取数据

由于这个数据比较显着,直接用经过一些字符串查找和截取操作就能够取出来。

pos_start = html.find('SNB.cubeInfo = ') + len('SNB.cubeInfo = ')

pos_end = html.find('SNB.cubePieData')

data = html[pos_start:pos_end]

dic = json.loads(data)

dic 便是一个包括数据的字典目标。之后想干什么就随意你了。

关于杂乱一点的状况,能够经过 BeautifulSoup 来定位 html 标签。再不好办的,就用正则表达式,根本都能够处理掉。

Step.4 处理数据

由于我想对数据进行耐久化存储,而且做展现和剖析,所以我用了 django 里的 ORM 来处理抓下来的数据。

# add Portfolio

portfolio, c = models.Portfolio.objects.get_or_create(code=dic['symbol'])

portfolio.name = dic['name']

portfolio.earnings = dic['total_gain']

portfolio.save()

# add Stock

stocks = dic['view_rebalancing']['holdings']

for s in stocks:

stock, c = models.Stock.objects.get_or_create(code=s['stock_symbol'])

stock.name = s['stock_name']

stock.count += 1

stock.weight += s['weight']

stock.save()

Portfolio 记载下组合及其收益,Stock则记载每支股票的被录入数和总录入比例。

关于抓取到的,一般也能够存在文件中,或许直接经过 SQL 存入数据库,视不同状况和个人喜爱而定。

Step.5 批量抓取

前面的一套做下来,就完整地抓取了一组数据。要到达意图,还要规划一下批量抓取的程序。

一个要处理的问题便是怎样取得组合列表。这个能够再经过另一个抓取程序来完成。然后依据这些列表来循环抓取就能够了。

若要细究,还要考虑列表怎样保存和运用,怎样处理抓取失利和重复抓取,怎样操控抓取频率避免被封,可否并行抓取等等。

Step.6 数据剖析

数据有了,你要怎样用它,这是个很大的问题。能够简略的计算现象,也能够想办法深入剖析背面躲藏的逻辑。不多说,我也还只是在探索之中。

python读取财经数据答:提取日期数据根本语法

from WindPy import w

w.start()

当呈现.ErrorCode==-103阐明没连接上,要start一下

w.wsd(security, fields, startDate = None, endDate= None , options = None)

opion 可选(period, 日期类型, 钱银类型,前后复权)

提取财务数据根本语法

w.wss(security, fields, options = None)

提取板块日序列根本语法

w.wses(sectorCode, fields, startDate = None, endDate = None, options = None)

提取板块日截面数据根本语法

w.wsee(sectorCode, fields, options=None)

提取微观数据根本语法

w.edb(codes, startDate =None, endDate =None, options=None)

1.日期序列根本语法

ts.get_hist_data(stock,start,end)

留意:1.stock不能是调集,只能单个股票 2.需求带上.sz或.sh 3.没有field,只能取出数据后再切除.

2.pro用法

pro.daily(code, start, end, fields)

tushare引证句子

坏处也很显着,一方面不能stock调集输入,一次只能调取一个股票对应数据,另一方面tushare虽是免费试用,但有权限约束。

根本语法

wb.get_data_yahoo(code, start, end)

wb.DataReader(code, 'yahoo', start, end)

无法增加fields, 虽能调集适用,但出来的索引挺古怪的

引荐运用界说函数或用for循环批量获取数据

整体感觉wind api最舒服,但需求账号,mac也不能直接调用wind api。仍是引荐tushare的pro用法。

小白学习中,请指导=v=

承受日子中的风雨,韶光仓促流去,留下的是风雨往后的阅历,那时咱们能够让自己的心灵得到另一种安慰。所以遇到阐明问题咱们能够活跃的去寻觅处理的办法,时间告知自己没有什么伤心的坎。常识关于python爬取股票前史数据就整理到这了。

发布于 2024-04-24 18:04:54
收藏
分享
海报
33
目录

    推荐阅读