场内的代码表, 感觉水很深

news/2024/7/19 8:58:57 标签: 爬虫

场内的代码表, 感觉水很深

写了一个爬取代码表的小爬虫, 很久以前的事了.
现在想好好分析一下, 代码的分类, 又写了一个统计函数. 分别统计
7个不同字头的代码里, 分别有多少只品种.

先上菜:

代码运行结果(cmd窗口里启动Ipython的场景):
1005050-20190220234514508-825517700.png

spyder的Ipython窗口里的场景: 想看看他们之间在博客里的展现有何不同:
备注: 这次spyder的字体改成了: DFKai_SB
因为新宋体确实没法用: 该字体在代码窗口里的花括号太难看了, 以至于无法与方括号无异
所以不得不放弃新宋体.

1005050-20190221000114981-781304093.png

然后再现上厨艺


def get_codelist():
    cn_dict = p_load('d:/db/amipy/data/codename_dict.pkl')
    lst = [c for c in cn_dict.keys()]
    lst.sort()
    return lst

def get_xzt_security_num(codelist,xzt='1'):
    u'''
    检索代码列表, 得到'1'字头的品种的数量
    >>> codelist = get_codelist()
    >>> get_xzt_security_num(codelist, '0')
    '''
    count = 0
    for c in codelist:
        if c.startswith(xzt):
            count +=1
    return count

def stats_security_num(codelist, dt='2018-03-01'):
    u'''
    分别统计某个字头的代码的品种个数
    Examples:
    >>> clist = get_codelist()
    >>> stats_security_num(clist)
    
    '''
    print('沪深两市证券代码表采集日期: ', dt)
    print('Number of securities in both market: {}'.format(len(codelist)))
    # 4237
    prefix = ['0', '1', '2', '3', '5', '6', '9',]
    nums=[]
    total=0
    for pre in prefix:
        num=get_xzt_security_num(codelist, pre)
        nums.append(num)
        total += num
    print("沪深市场里, 证券品种的总数量是: ", total)
    
    for i in range(len(nums)):
        print('沪深两个市场里, "{}"字头的证券数量是: {} '.format(prefix[i], nums[i]))
        

然后再顺便说一下: cmd窗口里如何如何启动Ipython环境:

1005050-20190220235228310-41982249.png

代码表的更新:

利用rainx的pytdx可以方便地获取当天的代码表.
特别感谢rainx的奉献!

代码:

def test_get_s_list(mkt_id=0, show=True):
    '''
    >>> codelist0 = test_get_s_list(0)        
    >>> codelist1 = test_get_s_list(1)        
    '''
    api = TdxHq_API(**param)
    with api.connect(ip='123.125.108.90', port=7709):
        total = api.get_security_count(mkt_id)
        tmp='深' if mkt_id==0 else '沪'
        print('{}市里的总个数: '.format(tmp), total, '整除1000的值: ',total//1000)
        clist=[]
        print('  Num 本次里的品种个数')
        print('start counts')
        print('-'*40)
        for i in range(0, (total//1000+1)*1000,1000):
            li = api.get_security_list(mkt_id, i)
            print('{:5d} {:4d}'.format(i, len(li)))
            for j in range(len(li)):
                clist.append(li[j])
        
        if show:
            print('{} {} {}'.format('  sn.', 'Code  ', 'Name'))
            print('-'*50)
            #for i in [0,1,2]:
            for i in range(len(clist)):
                if i%100==0:
                    print('{0:5d} {1[code]:} {1[name]:} '.format( i, clist[i]))
        
        
        # =============================================================================
        # d0[2]
        # Out[94]: 
        # OrderedDict([('code', '999997'),
        #              ('volunit', 100),
        #              ('decimal_point', 2),
        #              ('name', 'B股指数'),
        #              ('pre_close', 286.32940673828125)])
        #         
        # =============================================================================
        return clist

结果图:

1005050-20190221023918597-1626352032.png

1005050-20190221024514502-545614595.png

转载于:https://www.cnblogs.com/duan-qs/p/10409971.html


http://www.niftyadmin.cn/n/974184.html

相关文章

Java压缩文件和文件夹

好久没有更新了……………………此处省略一万字。胡汉三又回来啦!!!!言归正传。。。 本次主要是实现了功能:根据传入的路径,压缩文件和文件夹,例如从A路径下的文件压缩到B目录,其中包…

java图形用户界面编程报告_java图形用户界面编程

一、实验目的:(1)掌握文本组件、按钮和单、复选按钮组件的使用。(2)掌握列表的使用,鼠标、键盘事件的处理。(3)掌握布局控制的方法。二、实验内容和要求:(1)编写一个小程序响应鼠标事件,当鼠标事件发生时,在状态条显示…

跟着Zepto学dom操作(一)

之前有尝试着去阅读jQuery源码,但是由于源码过长再加上自己技术上有点不到家,在尝试过几遍之后不得不遗憾的选择放弃。对dom的操作一直都使用jQuery,如果让我用原生的JS去操作dom,会发现自己不能很快的实现需求,所以这…

maven java插件开发_【Maven】maven 插件开发实战

前言众所周知,maven 实质上是一个插件执行框架,所有的工作都是通过插件完成的。包括我们日常使用到的类似 install、clean、deploy、compiler。。。这些命令,其实底层都是一个一个的 maven 插件。如何开发自己的插件1. maven 插件的命名规范在…

写给Java程序员的Java虚拟机学习指南

大家好,我是极客时间《深入拆解Java虚拟机》作者、Oracle Labs高级研究员郑雨迪。有幸借这个专题的机会,能和大家分享为何Java工程师要学Java虚拟机?如何掌握Java虚拟机? 工欲善其事,必先利其器 “为什么学Java虚拟机”…

python-函数之动态函数

动态函数 参数:位置参数、默认参数、动态参数 动态参数:*args :接收所有按照位置传的参数,接收到的是参数组成的元祖**kwargs :接收所有按照关键字传的参数,接收到的是参数组成的字典所有的参数的顺序:位置参数&…

anaconda下载好之后,spyder打不开,jupyter notebook无法运行的解决方案

问题描述:spyder打开没反应(无法出现代码界面),jupyter notebook运行时python旁是实心圆圈(jupyter notebook无法运行, 写代码时没有专门的颜色,写好代码,一run就自动下一行in[]&…

试水区块链出版?纽约时报在招人了

本周三纽约时报发布了一份招聘信息,“正在寻找帮助新闻出版商设计基于区块链的概念证明的人”,这意味着纽约时报也要试水区块链技术了。 据外媒报道,为了启动这个项目,纽约时报正在寻找一个在区块链领域的“领袖性人物”&#xff…