可转债数据一览表集思录_爬取集思录可转债数据

本文介绍了作者在可转债市场降温后,由于tushare缺乏实时数据,于是通过修改CSDN上的爬虫程序获取集思录的可转债数据,以满足对300余只可转债的跟踪需求。
摘要由CSDN通过智能技术生成

前段时间可转债市场很火,近期由于信用债暴雷,可转债市场一下就哑火了。想想就可笑,但可转债市场毕竟有300只左右的规模,未来势必会更大,考虑到tushare没有可转债的实时行情,我就在csdn上找了一个爬虫程序,改了一下。

import jsonimport requestsimport csvimport refrom lxml import etreedef get_dat():    headers = {        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",    }    newUrl ="https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___t=1584777951900"    #最简单的爬虫请求.也可以加上headers字段,防止部分网址的反爬虫机制    response = requests.get(newUrl)    #当爬取的界面需要用户名密码登录时候,构建的请求需要包含auth字段    data = response.content.decode("utf-8")    dat = json.loads(data)    # 所有数据    lst_data = []    for one in dat['rows']:        # 每一条数据        lst_dat = []        # 转债id        id = one["id"]        dat_cell = one["cell"]        # 是否赎回        is_shui = dat_cell['force_redeem']        if is_shui == None:            # 转债名称            name = dat_cell['bond_nm']            # 现价            price = dat_cell['price']            # 溢价率            premium_rt = dat_cell['premium_rt']            # 评级            rating_cd = dat_cell['rating_cd']            # 回售触发价            put_convert_price = dat_cell['put_convert_price']            # 强赎触发价            force_redeem_price = dat_cell['force_redeem_price']            # 剩余时间            last_time = dat_cell['year_left']            # 双低            dblow = dat_cell['dblow']            # 获取赎回价            xiangqing_url = 'https://www.jisilu.cn/data/convert_bond_detail/' + id            xiangqing_response = requests.get(xiangqing_url)            html = xiangqing_response.content.decode("utf-8")            html = etree.HTML(html)            lixi = html.xpath('.//td[@id="cpn_desc"]/text()')            pattern = re.compile(r'\d+\.\d+?')  # 查找数字            lixi = pattern.findall(lixi[0])            shuhuijia = html.xpath('.//td[@id="redeem_price"]/text()')            li_price = 0            for li in lixi:                li_price = li_price + float(li)            try:                jiancang = float(shuhuijia[0]) + (li_price - float(lixi[-1])) * 0.8            except:                jiancang = 0            # 是否可操作            if jiancang != 0 and float(price) - jiancang < 3:                is_oper = '建仓'                if jiancang != 0 and float(price) - float(shuhuijia[0]) < 3:                    is_oper = '加仓'            else:                is_oper = ''            lst_dat.append(id)            lst_dat.append(name)            lst_dat.append(price)            lst_dat.append(jiancang)            lst_dat.append(shuhuijia[0])            lst_dat.append('')            lst_dat.append(premium_rt)            lst_dat.append(rating_cd)            lst_dat.append(put_convert_price)            lst_dat.append(force_redeem_price)            lst_dat.append(last_time)            lst_dat.append(dblow)            lst_dat.append(is_oper)            lst_data.append(lst_dat)        else:            continue    return lst_datadef wirte_csv(data):    # 1. 创建文件对象    f = open('可转债.csv', 'w', encoding='gbk', newline='')    # 2. 基于文件对象构建 csv写入对象    csv_writer = csv.writer(f)    # 3. 构建列表头    csv_writer.writerow(["代 码", "转债名称", "现 价", "建仓线", "加仓线", "重仓线", "溢价率", "评级",                     "回售触发价", "强赎触发价", "剩余年限", "双低", "操作"])    # 4. 写入csv文件内容    for dat in data:        csv_writer.writerow(dat)    # 5. 关闭文件    f.close()if __name__ == '__main__':    data = get_dat()    wirte_csv(data)

结果如下图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值