前阵子有个金融行业的朋友和我交流,讲了这样的一个问题,如下图:
这是一个可转债行情的界面,网址是:https://www.jisilu.cn/data/cbnew/#cb
因为是实时行情,每隔大概几秒会自动刷新行情信息。
这位朋友的问题是:这些信息只需要其中的一部分,还有一部分很重要的信息,如转股日期
、转股价格
也希望可以显示在一起。
具体来说,他的需求就是:
1、按自己的要求筛选出可转债,如溢价率<-5
。
2、把该可转债的重要信息从该页面提取并显示出来,如可转债名称
、价格
、涨幅
、溢价率
、回售日期
、正股名称
、价格
、涨幅
。
3、把不在该页面的转股日期
、转股价格
的信息也提取显示出来。
4、以上数据要可以及时刷新。
今天这个实例因为涉及到一些金融问题,比较复杂,就不多解释为什么要这些数据,只是简单记录和分享一下实现这个数据抓取和显示的过程。
先看效果
这是永恒君帮他写的一个简易的程序,基本可以满足他的需求:
程序运行后,筛选出溢价率<-5
的可转债,然后显示需要的信息。
按回车会刷新后,重新获取。
简单记录一下过程
获取可转债信息如下,可自行定义显示的内容:
url = 'https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___t=1556153776641'
d = {'listed': 'Y', 'rp': '50','page':'1'}
r = requests.post(url, data=d) #获取可转债即时的数据,传给变量r
all_data = r.json()#r为json格式数据,转换为可读的列表形式
contents = all_data['rows']
for i in range(len(all_data['rows'])):
kzz =[] #存储可转债信息的列表
data_kzz = {
"可转债名称":contents[i]['cell']['bond_nm'],
"价格":contents[i]['cell']['price'],
"涨幅":contents[i]['cell']['increase_rt'],
"溢价率":contents[i]['cell']['premium_rt'],
"转股日期":contents[i]['cell']['convert_dt'],
"转股价格":contents[i]['cell']['convert_price'],
"回售日期":contents[i]['cell']['next_put_dt']
}
#每一条可转债信息
kzz.append(data_kzz)#添加至可转债信息列表
zg = []#正股信息列表
data_zg = {
"正股名称":contents[i]['cell']['stock_nm'],
"价格":contents[i]['cell']['sprice'],
"涨幅":contents[i]['cell']['sincrease_rt']
}
#每一条正股信息
zg.append(data_zg)
筛选可转债如下,可自行定义筛选的条件:
if float(data_kzz['溢价率'][:-1])<-5:#筛选可转债溢价率为负数
print(data_kzz,'\n',data_zg)
及时刷新如下:
while True:
if key =="q":
break
完工。
代码有点简陋,能满足要求即可。
因为可能不具有普遍性的需求,就打包exe文件了,就直接放上源代码好了。后台回复可转债即可。
欢迎大咖们指点!
微信公众号:永恒君的百宝箱
个人博客:www.yhjbox.com
转载请注明:永恒君的百宝箱 » 这样获取可转债行情信息,直观又方便