精华内容
下载资源
问答
  • Python获取股票实时数据

    千次阅读 2019-08-14 10:23:08
    近期爬虫入门,简单搞了个小脚本经baidu查询指定股票代码的实时行情数据(好多网站禁了,所有走的baidu,原因就不细说了~~)。 前期操作呢?当然是按部就班的一些列抓包,浏览器上F12就行了,找到对应的URL,然后...

    近期爬虫入门,简单搞了个小脚本经baidu查询指定股票代码的实时行情数据(好多网站禁了,所有走的baidu,原因就不细说了~~)。

    前期操作呢?当然是按部就班的一些列抓包,浏览器上F12就行了,找到对应的URL,然后准备爬爬爬,,亦可赛艇

    import os
    import time
    import urllib2
    import cookielib
    from bs4 import BeautifulSoup
    
    check_url = r"https://www.baidu.com/s?wd={ID}"
    check_id_list = ["000001", "399001", "300749", "600016", "601939", "601098"]
    
    def get_sys_time():
        return time.strftime('%Y-%m-%d_%H_%M_%S', time.localtime(time.time()))
    
    def get_info_from_baidu():
        cookie = cookielib.CookieJar()  # use to store cookies
        # create an OpenerDirector instance,which can handle cookie automatically
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    
        # OpenerDirector automatically adds User-Agent and Connection header to every Request
        opener.addheaders = [('User-Agent',
                              'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.100 Safari/537.36'),
                             ('Connection', 'keep-alive')]
    
        urllib2.install_opener(opener)
    
        info_dict = {}
        for check_id in check_id_list:
            url = check_url.replace("{ID}", check_id)
            request = urllib2.Request(url)
            response = opener.open(request)
            home_page = response.read()
            soup = BeautifulSoup(home_page, 'lxml')
            wikiNode = soup.find('div', class_='op-stockdynamic-moretab-cur')
            tds = wikiNode.find_all('span')
            info = tds[0].get_text().ljust(10) + tds[-1].get_text().ljust(16)
            info_dict[check_id] = info
        opener.close()
        cookie.clear()
        return info_dict
    
    if __name__ == '__main__':
        print ">>> %s <<<" % get_sys_time()
        infos = get_info_from_baidu()
        for key, item in infos.items():
            print key, item

    简单访问下目标Url,然后解析下返回数据即可获取期望实时信息,简单运行脚本后结果如下,激动ing ...

    然而,,没有高兴多久,用了几天好发现数据有点问题,有的股票代码对应信息是几天前的收盘信息(明明大盘大涨啊,这里却跌着,蒙圈的很(⊙o⊙)…)。查了一阵没啥头绪,猜测大概率跟检索的Url有关,相关经验太少没搞定,若有大神了解麻烦给指点迷经。

    此路不好走,只能换接口。找啊找,找到了sina这个接口,简单试了下还是蛮好用的,详细接口介绍可见https://blog.csdn.net/fangquan1980/article/details/80006762

    接口找到了,继续爬爬爬,,,

    import os
    import time
    import collections
    import urllib2
    import cookielib
    from collections import OrderedDict
    
    check_url = "http://hq.sinajs.cn/list={ID}"
    check_id_list = ["sh000001", "sz399001","sz399006", "sh600016", "sh601939", "sh601098", "sz300749"]
    
    def get_sys_time():
        return time.strftime('%Y-%m-%d_%H_%M_%S',time.localtime(time.time()))
    
    def get_info_form_feedback(basic_info):
        startIndex = basic_info.find(",") + 1
        endIndex = basic_info.rfind(",")
        info = basic_info[startIndex:endIndex]
        info_list = info.split(",")
    
        yesterday = info_list[1]
        now = round(float(info_list[2]),2)
        gap = round(float(now) - float(yesterday), 2)
        percent = round((gap / float(yesterday)) * 100, 2)
        if gap > 0:
            gap = "+" + str(gap)
            percent = "+" + str(percent)
    
        return "%s%s(%s%%)" % (str(now).ljust(10), str(gap), str(percent))
    
    def get_info_from_sina():
        # info_dict = {}
        info_dict = OrderedDict()
    
        cookie = cookielib.CookieJar()  # use to store cookies
        # create an OpenerDirector instance,which can handle cookie automatically
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
        # OpenerDirector automatically adds User-Agent and Connection header to every Request
        opener.addheaders = [('User-Agent',
                              'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.100 Safari/537.36'),
                             ('Connection', 'keep-alive')]
        urllib2.install_opener(opener)
    
        for check_id in check_id_list:
            url = check_url.replace("{ID}", check_id)
            request = urllib2.Request(url)
            response = opener.open(request)
            basic_info = response.read()
            info_dict[check_id] = get_info_form_feedback(basic_info)
    
        opener.close()
        cookie.clear()
    
        return info_dict
    
    if __name__ == '__main__':
        print ">>> %s <<<"%get_sys_time()
        infos = get_info_from_sina()
        for key, item in infos.items():
            print key, item

    这次确实可以了,数据实时,并且访问效率高,解决所需,再也不用偷偷看手机了O(∩_∩)O

    总结:本次只是出于股票实时数据获取目的出发,暂未完成爬虫相关的系统学习,后续再接再厉!!!关于爬取百度数据滞后及相关Url问题还得再去研究,先Mark到此处。

     

    展开全文
  • python数据获取 5
  • 使用python获取股票历史数据实时分笔数据

    财经数据接口包tushare的使用(一)

    Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据、年度季度报表数据、实时分笔数据、历史分笔数据,本文对tushare的用法,已经存在的一些问题做一些介绍。
    一:安装tushare

    为避免由于依赖包缺失导致安装失败,请先安装anaconda,百度网盘地址:
    链接:http://pan.baidu.com/s/1qYDQUGs 密码:6wq8
    安装直接一直下一步即可
    安装完成之后,anaconda会自动配置环境变量,直接就可以用了,cmd打开命令行窗口,使用命令
    pip install tushare
    即可安装tushare
    二:tushare的使用

    1、获取历史数据之get_hist_data
    参数说明:
    • code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
    • start:开始日期,格式YYYY-MM-DD
    • end:结束日期,格式YYYY-MM-DD
    • ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
    • retry_count:当网络异常后重试次数,默认为3
    • pause:重试时停顿秒数,默认为0
    返回值说明:
    • date:日期
    • open:开盘价
    • high:最高价
    • close:收盘价
    • low:最低价
    • volume:成交量
    • price_change:价格变动
    • p_change:涨跌幅
    • ma5:5日均价
    • ma10:10日均价
    • ma20:20日均价
    • v_ma5:5日均量
    • v_ma10:10日均量
    • v_ma20:20日均量
    • turnover:换手率[注:指数无此项]
    调用方法:
    例一:
    import tushare as ts
    data=ts.get_hist_data(‘300032’)
    print(data)

    结果展示:
    open high close low volume price_change p_change \
    date
    2017-11-22 13.89 13.96 13.95 13.77 19670.56 -0.02 -0.14
    2017-11-21 13.97 13.98 13.97 13.77 23196.87 -0.01 -0.07
    2017-11-20 13.90 14.02 13.98 13.68 23114.10 0.01 0.07
    2017-11-17 13.87 13.97 13.97 13.67 39828.91 0.00 0.00
    2017-11-16 13.98 14.09 13.97 13.86 18029.02 -0.04 -0.29
    2017-11-15 14.37 14.37 14.01 13.88 31731.32 -0.37 -2.57
    2017-11-14 14.00 14.43 14.38 14.00 49168.37 0.32 2.28

               ma5    ma10    ma20     v_ma5    v_ma10    v_ma20  turnover  
    

    date
    2017-11-22 13.968 14.046 14.044 24767.89 26789.33 28602.29 0.26
    2017-11-21 13.980 14.048 14.054 27180.04 27617.60 28540.55 0.31
    2017-11-20 14.062 14.043 14.064 32374.34 28650.48 28455.20 0.31
    2017-11-17 14.078 14.038 14.083 31644.05 29352.32 28141.07 0.53
    2017-11-16 14.114 14.039 14.099 28582.57 29823.22 27169.73 0.24
    2017-11-15 14.124 14.042 14.118 28810.76 30467.91 27007.47 0.42
    2017-11-14 14.116 14.046 14.132 28055.16 30117.38 26536.15 0.66

    请读者注意,文档中的注释并不准确,使用该接口并不能获取股票自上市以来的所有日线数据,例如这里举的例子,金龙机电这只股票(2009年12月25日上市)。
    请再看例子:
    例二:
    import tushare as ts
    data=ts.get_hist_data(‘300032’,start=’2011-01-01’,end=’2011-05-01’)
    print(data)

    返回结果是:
    Empty DataFrame
    Columns: [open, high, close, low, volume, price_change, p_change, ma5, ma10, ma20, v_ma5, v_ma10, v_ma20, turnover]
    Index: []
    可以看到,这几行代码返回的数据为一个空的dataframe,这是网页文章中没有详细说明的问题在这里指出。如何解决这个问题,请关注微信公众号【数据之佳】,注意是才子佳人的佳,该公众号分享量化分析模型,讲解一些比较好的模型,工具等等,tushare的使用公众号中有更详细的介绍。公众号也会讲解如何用其他方式获取更稳定可靠的数据

    2、获取历史数据之get_h_data
    作者提供另外一个函数get_h_data用于获取股票历史数据,该函数的调用网页文档没有给出例子,在这里依然用上面的例子来作测试:
    例三:
    import tushare as ts
    data=ts.get_h_data(‘300032’)
    print(data)

    返回结果:
    open high close low volume amount
    date
    2017-11-22 13.89 13.96 13.95 13.77 1967056.0 27282987.0
    2017-11-21 13.97 13.98 13.97 13.77 2319687.0 32194061.0
    2017-11-20 13.90 14.02 13.98 13.68 2311410.0 32033838.0
    2017-11-17 13.87 13.97 13.97 13.67 3982891.0 54911258.0
    ……
    2016-11-24 17.31 17.42 17.17 17.15 3799600.0 66045345.0
    2016-11-23 17.37 17.51 17.27 17.24 5008208.0 87687070.0
    2016-11-22 17.37 17.41 17.40 17.20 4536796.0 79050365.0
    [246 rows x 6 columns]

    在不指定开始时间和结束时间时,该函数默认返回最近一年的日线数据,返回的数据与get_hist_data不同的是,该函数只返回开盘价(open)、最高价(high)、收盘价(close)、最低价(low)、成交量(volume)、成交金额(amount)六列
    同样的,测试一下该接口能不能获取更早一些的数据:

    import tushare as ts
    data=ts.get_h_data(‘300032’,start=’2011-01-01’,end=’2011-05-01’)
    print(data)

    返回结果:
    [Getting data:]# open high close low volume amount
    date
    2011-04-29 14.18 14.41 14.41 13.96 444287.0 10930304.0
    2011-04-28 14.60 14.66 14.10 13.86 2550197.0 63069508.0
    2011-04-27 14.50 14.67 14.44 14.26 457503.0 11427143.0
    2011-04-26 14.82 14.82 14.41 14.31 628685.0 15732398. ……
    2011-01-04 13.14 13.23 13.21 12.84 1099825.0 24814884.0
    [77 rows x 6 columns]

    可以看到,相比于get_hist_data,该函数能够返回较早一些的数据,但没有换手率,均线数据这些指标,当然,我们可以获取到数据之后,自己写个脚本计算均线这些信息,但是如果要自己计算换手率,就必须知道股票的市值是多少,这两个函数都没有返回关于股票市值的信息,因此如果要自己计算换手率,就得从其他地方获取股票每个交易日的市值信息。

    3、获取历史数据之:get_k_data
    作者提供了第三个获取K线数据的函数,get_k_data,参数与get_hist_data相同。

    例四:
    import tushare as ts
    data=ts.get_k_data(‘300032’)
    print(data)
    返回结果:
    date open close high low volume code
    0 2015-02-02 12.914 13.742 14.086 12.914 56295.0 300032
    1 2015-02-03 13.742 14.377 14.500 13.742 63588.0 300032
    2 2015-02-04 14.412 14.510 14.761 13.791 35558.0 300032
    3 2015-02-05 14.520 14.471 14.751 14.224 34088.0 300032
    4 2015-02-06 14.648 14.343 14.648 13.845 35039.0 300032
    5 2015-02-09 14.372 14.062 14.549 13.904 24195.0 300032

    与前两个函数相比,这个函数获取数据的速度很明显要快很多,而且可以返回每一只股票从上市开始到当前交易日的所有日线数据,这个有点是前两个函数都不具备的,读者可以自己验证一下,get_h_data可以返回比get_hist_data更早一些的数据,但是对于有些股票依然不能获取很早的数据,更重要的是,如果批量3000多只股票的数据,前两个都不如get_k_data稳定,我一开始搜集数据的时候,为了获取更全面的数据,用的是get_hist_data,但是批量获取,反反复复跑脚本,没有一次是能够将数据完整获取完的,每一次都是中途就挂了,读者可以自己测试一下,间隔时间长一些应该没问题,不过我后来已经知道其他的解决办法,既能够获取全面的数据,同时也不必担心速度的问题,怎么获取一样会在微信公众号【数据之佳】介绍,这里先介绍tushare

    4、获取实时行情数据get_today_all()
    返回值说明:
    • code:代码
    • name:名称
    • changepercent:涨跌幅
    • trade:现价
    • open:开盘价
    • high:最高价
    • low:最低价
    • settlement:昨日收盘价
    • volume:成交量
    • turnoverratio:换手率
    • amount:成交量
    • per:市盈率
    • pb:市净率
    • mktcap:总市值
    • nmc:流通市值
    该函数没有参数,直接调用即可
    测试:
    例五:
    import tushare as ts
    data=ts.get_today_all()
    print(data)
    返回值:
    [Getting data:]############################################################ code name changepercent trade open high low settlement \
    0 603999 读者传媒 -0.622 7.99 8.03 8.11 7.92 8.04
    1 603998 方盛制药 -2.535 12.69 13.00 13.13 12.58 13.02
    2 603997 继峰股份 -1.529 11.59 11.77 11.86 11.50 11.77
    ……
    volume turnoverratio amount per pb mktcap \
    0 2208414.0 0.95851 17697355.0 27.552 2.759 4.602240e+05
    1 2733900.0 1.01565 34976989.0 79.313 5.471 5.468584e+05
    2 1848500.0 1.08099 21572699.0 19.644 4.428 7.301700e+05
    nmc
    0 1.840896e+05
    1 3.415859e+05
    2 1.981890e+05
    …….
    [3446 rows x 15 columns]

    限于篇幅,这里只贴出前三行数据,get_today_all()获取了所有股票的当前行情数据,但是获取一次数据的耗时比较长,读者可以自己在实时行情和盘后自己测试一下,看看会不会挂,整体延时有多久等等

    5、历史分笔数据之:get_tick_data
    参数说明:
    code:股票代码,即6位数字代码
    date:日期,格式YYYY-MM-DD
    retry_count : int, 默认3,如遇网络等问题重复执行的次数
    pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题

    该函数返回指定日期的历史分笔数据,但由于历史分笔数据很耗空间,所以一般服务器都不会存储很长时间的历史分笔数据,该接口也一样,并不能获取从上市以来的所有日期的分笔数据。
    例六:
    import tushare as ts
    data=ts.get_tick_data(‘300032’,’2017-11-01’)
    print(data)

    返回结果:
    time price change volume amount type
    0 15:00:03 14.05 -0.01 371 521255 卖盘
    1 14:57:03 14.06 0.01 1 1406 买盘
    2 14:56:57 14.05 – 92 129260 卖盘
    3 14:56:54 14.05 – 20 28100 卖盘
    ……
    1526 09:30:36 14.10 -0.02 159 224190 中性盘
    1527 09:30:06 14.12 14.12 7 9884 买盘
    [1528 rows x 6 columns]

    6、实时分笔数据之get_realtime_quotes
    参数说明:
    • symbols:6位数字股票代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板) 可输入的类型:str、list、set或者pandas的Series对象
    例八:
    import tushare as ts
    data=ts.get_realtime_quotes(‘300032’)
    print(data)
    name open pre_close price high low bid ask volume \
    0 金龙机电 13.890 13.970 13.950 13.960 13.770 13.940 13.950 1967056
    amount … a2_p a3_v a3_p a4_v a4_p a5_v a5_p \
    0 27282987.240 … 13.960 741 13.970 547 13.980 332 13.990
    date time code
    0 2017-11-22 16:28:03 300032
    [1 rows x 33 columns]

    该接口返回的数据量较小,还是比较快的,读者可以自己在实时行情中和盘后自己测试一下

    6、当日历史分笔之get_today_ticks
    参数说明:
    code:股票代码,即6位数字代码
    retry_count : int, 默认3,如遇网络等问题重复执行的次数
    pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题

    例九
    import tushare as ts
    data=ts.get_today_ticks(‘300032’)
    print(data)

    返回值
    [Getting data:]################# time price pchange change volume amount type
    0 15:00:03 14.36 +2.79 0.00 938 1346968 卖盘
    1 14:57:00 14.36 +2.79 0.01 2 2872 卖盘
    2 14:56:57 14.35 +2.72 -0.01 27 39463 卖盘
    ……
    984 09:25:03 13.89 -0.57 0.00 27 37503 0
    [985 rows x 7 columns]

    该接口返回当前日期,当前时刻的所有粉笔成交数据,相比于上一个接口,速度慢很多,也请读者自己测试

    7、大单交易数据之get_sina_dd
    获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。
    参数说明:
    • code:股票代码,即6位数字代码
    • date:日期,格式YYYY-MM-DD
    • vol:手数,默认为400手,输入数值型参数
    • retry_count : int, 默认3,如遇网络等问题重复执行的次数
    • pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
    返回值说明:
    • code:代码
    • name:名称
    • time:时间
    • price:当前价格
    • volume:成交手
    • preprice :上一笔价格
    • type:买卖类型【买盘、卖盘、中性盘】
    例10:
    import tushare as ts
    data=ts.get_sina_dd(‘300032’,’2017-11-1’)
    print(data)

    返回值
    code name time price volume preprice type
    0 300032 金龙机电 14:45:54 13.97 91900 14.00 卖盘
    1 300032 金龙机电 10:51:36 14.10 57488 14.11 卖盘
    2 300032 金龙机电 10:19:42 14.05 50000 14.06 卖盘
    3 300032 金龙机电 09:38:36 14.03 42800 14.02 买盘

    借助于tushare,其实我们已经可以做一些量化分析和策略了,但是tushare在实际使用中,有一些不经如人意的地方,我在使用中遇到的问题,同时也自己优化了一一些地方,实在不满意的数据,从其他地方用自己想办法获取,对于tushare已经可以做得很好的就不洗自己再去做了,想要了解怎样获取更全面的数据,学习如何将机器学习算法和数据分析方法运用到自己的量化模型当中,请关注微信公众号【数据之佳】,我们将不定期更新文章
    这里写图片描述

    展开全文
  • 今天和大家分享一下使用Python获取股票实时价格的操作方法。工具/原料Python软件可以联网的电脑方法/步骤1要想获取股票数据,我们需要借助第三方模块。我们首先需要打开开始菜单。2我们在搜索框输入CMD找到命令提示...

    今天和大家分享一下使用Python获取股票实时价格的操作方法。

    工具/原料

    Python软件

    可以联网的电脑

    方法/步骤

    1

    要想获取股票数据,我们需要借助第三方模块。我们首先需要打开开始菜单。

    acfda02f47704618dca77f8fb08602214e5776d1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    2

    我们在搜索框输入CMD找到命令提示符。

    4e168d5653bbf8206f860dbfba21056105a36ed1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    3

    进入命令提示符页面之后,我们输入pip install tushare并带点击回车键。

    54a89daee8d7592af7927bcc9f31dfb6336c67d1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    4

    等待程序安装,直至最后看到Successfully字样,表明安装成功。否则重新进行第3步操作。

    988e1c532f632385fe4b7925cce833e038725dd1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    5

    我们打开Shell交互界面,输入import tushare as ts,引入tushare模块。

    31097f43d7d448312e966d13d40f822b75ee51d1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    6

    接下来打印print(ts.get_today_all()),该函数表示获取当天股票价格等数据。

    506d92f1d8a726337df95657c02c56ee7a7f44d1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    7

    接下来开始获取数据,等待数据获取完成,之后就可以看到股票信息已经被获取到。但是由于是在交互界面,大部分股票的信息被省略。如果想要看到完全的信息,我们还需要借助EXCEL相关模块。

    7d34fbf4fcf5ee0d05b33163f96b0ce264e7bad1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    354e7a781423beb93e43ba7630d6e1d06ce8b3d1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    END

    注意事项

    如果这篇经验对您有所帮助,请投票支持并转发帮助更多的人。

    经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

    举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

    展开阅读全部

    展开全文
  • 前段时间玩Python时无意看到了获取股票交易数据的tushare模块,由于自己对股票交易挺有兴趣,加上现在又在做数据挖掘工作,故想先将股票数据下载到数据库中,以便日后分析:# 导入需要用到的模块from queue import ...

    前段时间玩Python时无意看到了获取股票交易数据的tushare模块,由于自己对股票交易挺有兴趣,加上现在又在做数据挖掘工作,故想先将股票数据下载到数据库中,以便日后分析:

    # 导入需要用到的模块

    from queue import Queue

    import threading

    import os

    import datetime

    import tushare as ts

    from sqlalchemy import create_engine

    from sqlalchemy import types

    # 创建myql数据库引擎,便于后期链接数据库

    mysql_info = {'host':'localhost','port':3306,'user':'******','passwd':'******','db':'stock','charset':'utf8'}

    engine = create_engine('mysql+pymysql://%s:%s@%s:%s/%s?charset=%s' %(mysql_info['user'],mysql_info['passwd'],

    mysql_info['host'],mysql_info['port'],

    mysql_info['db'],mysql_info['charset']),

    echo=False)

    # 获取所有股票数据,利用股票代码获取复权数据

    stock_basics = ts.get_stock_basics()

    stock_basics.columns

    # 获取数据库现有数据的时间日期

    def get_old_date():

    con = engine.connect()

    sql1 = 'show tables;'

    tables = con.execute(sql1)

    if ('fq_day',) not in tables:

    date_old = datetime.date(2001,1,1)

    return date_old

    sql2 = 'select max(date) from fq_day;'

    date_old = con.execute(sql2).fetchall()[0][0].date()

    if date_old < datetime.date.today() - datetime.timedelta(1):

    return date_old

    else:

    con.close()

    print('今天已经获取过数据,不需重新获取')

    os._exit(1)

    # 声明队列,用于存取股票以代码数据,以便获取复权明细

    stock_code_queue = Queue()

    for code in stock_basics.index:

    stock_code_queue.put(code)

    type_fq_day = {'code':types.CHAR(6),'open':types.FLOAT,'hige':types.FLOAT,'close':types.FLOAT,'low':types.FLOAT,

    'amount':types.FLOAT,'factor':types.FLOAT}

    # 获取复权数据

    def process_data(old_date,task_qeue):

    #queueLock.acquire()

    while not task_qeue.empty():

    data = task_qeue.get()

    print("正在获取%s;数据还有%s条:" %(data,task_qeue.qsize()))

    #queueLock.release()

    date_begin = old_date + datetime.timedelta(1)

    date_end = datetime.date.today()

    try:

    qfq_day = ts.get_h_data(data,start = str(date_begin),end=str(date_end),autype='qfq',drop_factor=False)

    qfq_day['code'] = data

    qfq_day.to_sql('fq_day',engine,if_exists='append',dtype=type_fq_day)

    except:

    task_qeue.put(data) # 如果数据获取失败,将该数据重新存入到队列,便于后期继续执行

    #else:

    #queueLock.release()

    昨天试了下单线程下载股票数据,但由于获取数据量较大,所需时间特别长,这次用多线程实试试

    # 重写线程类,用户获取数据

    class get_qfq(threading.Thread):

    def __init__(self,name,queue,date_begin):

    threading.Thread.__init__(self)

    self.name = name

    self.queue = queue

    self.begin = date_begin

    def run(self):

    process_data(self.begin,self.queue)

    print("Exiting " + self.name)

    # 声明线程锁

    #queueLock = threading.Lock()

    old_date = get_old_date()

    # 生成10个线程

    threads = []

    for i in range(7):

    thread = get_qfq('thread'+ str(i), stock_code_queue,old_date)

    thread.start()

    threads.append(thread)

    for thread in threads:

    thread.join()

    正在获取300239;数据还有718条:

    [Getting data:]##正在获取002042;数据还有717条:

    [Getting data:]正在获取600999;数据还有716条:

    [Getting data:]正在获取300453;数据还有715条:

    [Getting data:]#正在获取600538;数据还有714条:

    [Getting data:]###正在获取002253;数据还有713条:

    [Getting data:]正在获取600188;数据还有712条:

    [Getting data:]正在获取000948;数据还有711条:

    [Getting data:]###正在获取002586;数据还有710条:

    [Getting data:]正在获取002651;数据还有709条:

    [Getting data:]正在获取600705;数据还有708条:

    [Getting data:]##正在获取300135;数据还有707条:

    [Getting data:]##正在获取600755;数据还有706条:

    [Getting data:]正在获取601890;数据还有705条:

    [Getting data:]正在获取300341;数据还有704条:

    [Getting data:]#正在获取000897;数据还有703条:

    [Getting data:]###正在获取600886;数据还有702条:

    [Getting data:]#正在获取002015;数据还有701条:

    [Getting data:]正在获取600662;数据还有700条:

    [Getting data:]#正在获取000408;数据还有699条:

    [Getting data:]#正在获取000524;数据还有698条:

    [Getting data:]#正在获取300309;数据还有697条:

    [Getting data:]#正在获取600333;数据还有696条:

    [Getting data:]##正在获取002178;数据还有695条:

    本次采用了10个线程,下载速度快了许多,查看了下流量,基本可以达到3M/S,是单线程的6倍左右。

    展开全文
  • Python 获取股市交易数据

    千次阅读 2020-04-13 11:09:47
    而我们的大盘最近也不消停,不过这也给大家抄底制造了机会,但机会都是给有准备的人,想要抓住机会就得懂得分析数据,想要分析数据还得先拿到交易数据,今天就来说说用 Python 如何获取股市交易数据。 TuShare 工具 ...
  • 项目介绍看到标题大家的第一反应估计是怎么用爬虫来获取股票交易数据,要获取股票交易数据确实是需要用爬虫没错,不过还有比使用爬虫更加方便的方式。今天要给大家介绍的是一个专门用来获取国内股票交易数据的开源...
  • 获取股票数据 这本来是专门为我的一个单一选股模型提供数据的类, 因此封装的只是模型中需要的数据. 如有其它需求可以自己扩展. 积分多的可以下载文件, 没积分的直接复制下面的代码是一样的. 代码不复杂, 一看就懂. ...
  • python获取股票数据

    千次阅读 2019-04-14 18:15:14
    参考 获取股票交易数据的Tushare的使用方法 代码 使用Python来获取国内股票数据的方法:TuShare
  • 闲了的时候还是要学一点金融知识,先不说金融懂多少,但是通过金融的目的来编程其实也还行。总之美好的一天不要浑浑噩噩的度过。我觉得都是值得回忆的美好岁月。我们都知道股票市场有很多...
  • python获取股票历史数据

    千次阅读 2015-11-02 09:50:09
    例如通达信、同花顺、大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想做更复杂的分析,例如回归分析、关联分析等就有点捉襟见肘,所以最好能够获取股票历史及实时数据并存储到...
  • import pandas as pd from pandas_...01-07 98.680000 100.129997 96.430000 96.449997 93.191338 81094400 2016-01-08 98.550003 99.110001 96.760002 96.959999 93.684120 70798000 Python股市数据分析教程:...
  • 金融量化分析-python量化分析系列之---使用python获取股票历史数据实时分笔数据 财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据、年度季度报表...
  • 使用Python获取股票数据

    千次阅读 2020-08-23 19:48:07
    下面是两种获取股票数据的方法,使用的编程语言是python
  • 第一种, 使用create_connection链接,需要pip install websocket-client (此方法不建议使用,链接不稳定,容易断,并且连接很耗时) import time from websocket import create_connection url = 'wss://i.cg.net/...
  • Python获取股票数据?这里推荐一个包―tushare,tushare是一个免费、开源的python财经数据接口包。主要实现了从数据采集、清洗加工到数据存储过程,能够为金融分析人员提供快速、整洁的分析数据,极大的降低他们的...
  • 我们之前已经教大家如何使用python,利用第三方免费开源库Tushare获取沪深两市的股票基础信息,包括上市时间,股东数量,净市盈率等等基本面数据。也通过编程代码实战,教大家如何获取指定股票的k线数据,包括5分钟K...
  • 通过不断调用新浪财经的API获取A股的实时数据,包括实时数据,最高最低价,昨日收盘价,买5,卖5的成交价,成交量等信息,并可以实时进行分时图的绘画。
  • python 获取股票数据

    千次阅读 2017-08-26 21:05:48
    python中的pandas_datareader包中可以查询雅虎的股票数据接口。 pip install pandas_datareaderfrom pandas_datareader import data from pandas import ExcelWriter price = data.get_data_yahoo('600624.ss','...
  • 要做量化投资,数据是基础,正所谓“巧妇难为...而TuShare正是这么一个免费、开源的python财经数据接口包,已将各类数据整理为dataframe类型供我们使用。 主要用到的函数: 1.实时行情获取 tushare.get_today_al...
  • 一、获取股票合约数据1.history_bar(某一合约历史数据)history_bars(order_book_id, bar_count, frequency, fields=None, skip_suspended=True, include_now=False)获取制定合约的历史行情,同事支持日以及分钟历史...
  • Python获取国内股票数据

    万次阅读 多人点赞 2017-06-27 15:06:48
    1. 安装支持库 ...TuShare是国内股票数据抓取工具,除了股票实时和历史数据,还有基本面数据,加上自然语言处理(比如情绪分析),或者机器学习,就比较有趣了。 3. 程序 1) 代码 import tushare
  • 学Python的都知道做量化投资的*步就是获取金融数据,今天我们就讨论一下python获取金融数据的方法,主要讲述如何通过tushare包获取金融数据。TuShare是一个着名的免费、开源的python财经数据接口包。其官网主页为:...
  • 基于tushare第三方库获取股票数据,并写入MySQL数据库库存储

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,656
精华内容 5,062
关键字:

python获取股票实时数据

python 订阅