首页 > 编程语言 >python获取同花顺涨停连板跌停数据代码可用

python获取同花顺涨停连板跌停数据代码可用

时间:2024-09-23 17:52:42浏览次数:3  
标签:同花顺 get python self 连板 up headers limit def

import requests
import json
import pandas as pd
class ths_limitup_data:
    def __init__(self):
        '''
        涨停数据
        '''
    def get_var(self):
        '''
        获取js
        '''
        with open('ths.js') as f:
            comm=f.read()
        comms=execjs.compile(comm)
        result=comms.call('v')
        return result
    def get_headers(self):
        '''
        请求头
        '''
        headers={
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'
        }
        return headers
    def get_limit_up_pool(self,date='20230926'):
        '''
        涨停股票池
        '''
        url='https://data.10jqka.com.cn/dataapi/limit_up/limit_up_pool?'
        params={
            'page': '1',
            'limit': '200',
            'field': '199112,10,9001,330323,330324,330325,9002,330329,133971,133970,1968584,3475914,9003,9004',
            'filter': 'HS,GEM2STAR',
            'order_field': '330324',
            'order_type': '0',
            'date':f"{date}",
            '_': '1695632712332',
        }
        headers=self.get_headers()
        res=requests.get(url=url,params=params,headers=headers)
        text=res.text
        if len(str(text))<70:
            return False,''
        else:
            try:
                text=res.json()
                df=pd.DataFrame(text['data']['info'])
                
                df.columns=['开板次数','首次涨停时间','最后涨停时间','证券代码','涨停形态','封单量',
                            '_','最近一年封板率','流通市值','_','_','涨跌幅','换手率','涨停原因',
                            '封单额','几天几板','股票名称','_','_','_','最新价','time_preview']
                del df['_']
                df['封单额比流通市值']=(df['封单额']/df['流通市值'])*100
                def select_daily(x):
                    try:
                        if x=='首板':
                            return 1
                        else:
                            x=str(x).split('天')[0][-1]
                            return int(x)
                    except:
                        return 0
                def select_num(x):
                    try:
                        if x=='首板':
                            return 1
                        else:
                            x=str(x).split('板')[0][-1]
                            return int(x)
                    except:
                        return 0
                df['几天']=df['几天几板'].apply(select_daily)
                df['几板']=df['几天几板'].apply(select_num)
                return True,df
            except:
                return False,''
    def get_limit_up(self,date='20230925'):
        '''
        冲刺涨停
        '''
        url='https://data.10jqka.com.cn/dataapi/limit_up/limit_up?'
        params={
            'page': '1',
            'limit': '200',
            'field': '199112,10,48,1968584,19,3475914,9003,9004',
            'filter': 'HS,GEM2STAR',
            'order_field': '199112',
            'order_type': '0',
            'date':f"{date}" ,
            '_': '1695635862890',
        }
        
        res=requests.get(url=url,params=params)
        text=res.text
        if len(str(text))<70:
            return False,''
        else:
            try:
                text=res.json()
                df=pd.DataFrame(text['data']['info'])
                columns=['开板次数','首次涨停时间','最后涨停时间','证券代码','涨停形态','封单量',
                            '_','最近一年封板率','流通市值','_','_','涨跌幅','换手率','涨停原因',
                            '封单额','几天几板','股票名称','_','_','_','最新价','time_preview']
                #del df['_']
                return True,df
            except:
                return False,''
#continuous_limit_pool
    def get_continuous_limit_pool(self,date='20230925'):
        '''
        连扳池
        '''
        url='https://data.10jqka.com.cn/dataapi/limit_up/continuous_limit_pool?'
        params={
            'page': '1',
            'limit': '200',
            'field': '199112,10,330329,330325,133971,133970,1968584,3475914,3541450,9004',
            'filter': 'HS,GEM2STAR',
            'order_field': '330329',
            'order_type': '0',
            'date': f'{date}',
            '_': '1695696080744',
        }
        res=requests.get(url=url,params=params)
        text=res.text
        if len(str(text))<70:
            return False,''
        else:
            try:
                text=res.json()
                df=pd.DataFrame(text['data']['info'])
                columns=['开板次数','首次涨停时间','最后涨停时间','证券代码','涨停形态','封单量',
                            '_','最近一年封板率','流通市值','_','_','涨跌幅','换手率','涨停原因',
                            '封单额','几天几板','股票名称','_','_','_','最新价','time_preview']
                #del df['_']
                return True,df
            except:
                return False,''
#open_limit_pool?
    def get_open_limit_pool(self,date='20230925'):
            '''
            炸板池
            '''
            url='https://data.10jqka.com.cn/dataapi/limit_up/open_limit_pool?'
            params={
                'page': '1',
                'limit': '15',
                'field': '199112,9002,48,1968584,19,3475914,9003,10,9004',
                'filter': 'HS,GEM2STAR',
                'order_field': '199112',
                'order_type': '0',
                'date':f'{date}',
                '_': '1695696646721',
            }
            res=requests.get(url=url,params=params)
            text=res.text
            if len(str(text))<70:
                return False,''
            else:
                try:
                    text=res.json()
                    df=pd.DataFrame(text['data']['info'])
                    columns=['开板次数','首次涨停时间','最后涨停时间','证券代码','涨停形态','封单量',
                                '_','最近一年封板率','流通市值','_','_','涨跌幅','换手率','涨停原因',
                                '封单额','几天几板','股票名称','_','_','_','最新价','time_preview']
                    #del df['_']
                    return True,df
                except:
                    return False,''
#lower_limit_pool
    def get_lower_limit_pool(self,date='20230925'):
            '''
            跌停
            '''
            url='https://data.10jqka.com.cn/dataapi/limit_up/lower_limit_pool?'
            params={
                'page': '1',
                'limit': '15',
                'field': '199112,10,330333,330334,1968584,3475914,9004',
                'filter': 'HS,GEM2STAR',
                'order_field': '330334',
                'order_type': '0',
                'date': f'{date}',
                '_': '1695697116683',
            }
            res=requests.get(url=url,params=params)
            text=res.text
            if len(str(text))<70:
                return False,''
            else:
                try:
                    text=res.json()
                    df=pd.DataFrame(text['data']['info'])
                    columns=['开板次数','首次涨停时间','最后涨停时间','证券代码','涨停形态','封单量',
                                '_','最近一年封板率','流通市值','_','_','涨跌幅','换手率','涨停原因',
                                '封单额','几天几板','股票名称','_','_','_','最新价','time_preview']
                    #del df['_']
                    return True,df
                except:
                    return False,''
#block_top
    def get_block_top_pool(self,date='20230925'):
            '''
            最强口
            '''
            url='https://data.10jqka.com.cn/dataapi/limit_up/block_top?'
            params={
                'filter': 'HS,GEM2STAR',
                'date':f'{date}'
            }
            res=requests.get(url=url,params=params)
            text=res.text
            print(text)
            if len(str(text))<70:
                return False,''
            else:
                try:
                    text=res.json()
                    df=pd.DataFrame(text['data'])
                    columns=['开板次数','首次涨停时间','最后涨停时间','证券代码','涨停形态','封单量',
                                '_','最近一年封板率','流通市值','_','_','涨跌幅','换手率','涨停原因',
                                '封单额','几天几板','股票名称','_','_','_','最新价','time_preview']
                    #del df['_']
                    return True,df
                except:
                    return False,''
    def read_func_data(self,func="self.get_block_top_pool(date='20230925')"):
        '''
        读取函数数据
        '''
        text=func
        while True:
            stats,df=eval(text)
            if stats==True:
                df=df
                break
            else:
                print('获取不成功{}'.format(func))
        return df
    def get_analysis_block_top_pool(self,date='20230925'):
        '''
        解析最强口
        '''
        func="self.get_block_top_pool(date='{}')".format(date)
        df=self.read_func_data(func=func)
        data=pd.DataFrame()
        for code,name,change,limit_up_num ,continuous_plate_num ,high ,high_num ,\
        days,stock_list in zip(df['code'],df['name'],df['change'] ,df['limit_up_num'], df['continuous_plate_num'],
                                df['high'] ,df['high_num'],df['days'],df['stock_list']):
            df1=pd.DataFrame(stock_list)
            df1['行业代码']=code
            df1['name']=name
            df1['change']=change
            df1['limit_up_num']=limit_up_num
            df1['continuous_plate_num']=continuous_plate_num
            df1['high']=high
            df1['high_num']=high_num
            df1['days']=days
            data=pd.concat([data,df1],ignore_index=True)
        data.to_excel(r'数据.xlsx')
        return data
    def get_stock_continuous_limit_up(self,date='20231124'):
        '''
        获取连扳天梯
        '''
        params={
            'filter': 'HS,GEM2STAR',
            'date':date,
        }
        url='https://data.10jqka.com.cn/dataapi/limit_up/continuous_limit_up?'
        res=requests.get(url=url,params=params)
        text=res.text
        data=pd.DataFrame()        
        if len(str(text))<70:
            return False,''
        else:
            try:
                text=res.json()
                df=pd.DataFrame(text['data'])
                for height,code_list in zip(df['height'],df['code_list']):
                    df1=pd.DataFrame(code_list)
                    data=pd.concat([data,df1],ignore_index=True)
                data['continue_num']=data['continue_num'].apply(lambda x:str(x)+'板')
                data['日期']=date
                data.columns=['证券代码','股票简称','market_id','连扳','日期']
                try:
                    del data['market_id']
                except:
                    pass
                return True,data
            except:
                return False,''
if __name__=='__main__':
    models=ths_limitup_data()
    df=models.read_func_data(func="models.get_limit_up_pool(date='20240920')")
    print(df)
    df.to_excel("数据.xlsx")
        

获取涨停数据

models=ths_limitup_data()
df=models.read_func_data(func="models.get_limit_up_pool(date='20240920')")
print(df)
df.to_excel("数据.xlsx")

	

标签:同花顺,get,python,self,连板,up,headers,limit,def
From: https://blog.csdn.net/weixin_42661541/article/details/142427255

相关文章

  • 【PAT_Python解】1026 程序运行时间
    原题链接:PTA|程序设计类实验辅助教学平台参考资料:1、【Python】1026程序运行时间(15分)_python运行15分钟-CSDN博客2、Python实现PAT乙级1026程序运行时间_pat1026python-CSDN博客3、python3小数位的四舍五入(用两种方法解决round遇5不进)_python_脚本之家Tips......
  • 【PAT_Python解】1025 反转链表
    原题链接:PTA|程序设计类实验辅助教学平台参考资料:1025反转链表(25分)PAT乙级C++/Python版_1025反转链表分数25作者chen,yue单位浙江大学给定一个常数k以及一个-CSDN博客【Python数据结构】反转链表的方法_反转链表python-CSDN博客Python基础算法——反......
  • python基础
    目录basic 标识符、变量、数据类型 标识符关键字字面量literal变量数据类型字符串str列表list元组tuple集合set字典dict 变量的输入与输出数字类型整型int浮点型float复数类型complex 布尔类型bool数字类型的转换:basic *良好的代码格式可提升代码......
  • Python实战:为Prometheus开发自定义Exporter
    Python实战:为Prometheus开发自定义Exporter在当今的微服务架构和容器化部署环境中,监控系统的重要性不言而喻。Prometheus作为一款开源的系统监控和警报工具,以其强大的功能和灵活性受到了广泛的欢迎。然而,Prometheus本身并不直接监控所有类型的服务或应用,这就需要我们为其开发自定......
  • python 字典的解包、合并
    python字典的解包、合并内容在Python中,可以使用以下方式解包和打包字典:解包字典使用**运算符可以解包字典,将字典中的键值对作为关键字参数传递给函数或构造器。例如:deffunc(a,b,c):print(a,b,c)params={'a':1,'b':2,'c':3}func(**params)#输出:......
  • Python 装饰器:强大的代码增强工具
    在Python中,装饰器是一种非常强大的工具,它可以在不修改原有代码的情况下,为函数、方法或类添加额外的功能。本文将深入探讨Python装饰器的高级用法,展示其在不同场景下的灵活性和强大功能。一、装饰器简介装饰器是一个函数,它接受一个函数作为参数,并返回一个新的函数。这......
  • pip 命令:python包管理器
    一、命令简介​pip​是Python的包管理工具,用于安装和管理Python包。它通常用于在Python环境中安装第三方库或工具。安装pipDebian/Ubuntuaptsudoaptupdatesudoaptinstallpython3-pipCentOS/RHELyumsudoyuminstallpython3-pipdnfsudodnfinsta......
  • python request库的使用
    安装和使用        requests库支持python3.8+,注意版本pipinstallrequests    在项目中引用时如下:importrequests访问网站    request访问网站一般用get和post两种方式    get    requests库提供了get方法,可以用get方式访......
  • 计算机专业选题推荐-基于python的协同过滤酒店推荐系统
    精彩专栏推荐订阅:在下方主页......
  • Python中if语句使用详解!
    在Python语言中,if语句是一种条件语句,主要用于根据不同的条件执行不同的操作。接下来,小编通过这篇文章为大家详细讲解一下Python语言if语句,快来学习吧!1、基础语法在Python中,if语句的基本语法是:ifcondition:statement(s)如果条件condition为真,则执行if语句......