# -*- coding:utf-8 -*-
import json
import requests
import csv
import re
from lxml import etree
import datetime
import pandas as pd
def 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"]
# 轉債名稱
name = dat_cell['bond_nm']
#股票名稱
stock_nm = dat_cell['stock_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']
#剩余規模
curr_iss_amt=dat_cell['curr_iss_amt']
#成交額
volume=dat_cell['volume']
#換手率
turnover_rt = dat_cell['turnover_rt']
#到期收益
ytm_rt_tax = dat_cell['ytm_rt_tax']
#下修次數
adj_cnt = dat_cell['adj_cnt']
# 統計日期
tjrq = datetime.date.today().__format__('%Y-%m-%d')
lst_dat.append(id)
lst_dat.append(name)
lst_dat.append(stock_nm)
lst_dat.append(price)
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(curr_iss_amt)
lst_dat.append(volume)
lst_dat.append(turnover_rt)
lst_dat.append(ytm_rt_tax)
lst_dat.append(adj_cnt)
lst_dat.append(tjrq)
lst_data.append(lst_dat)
return lst_data
def wirte_csv(data):
# 1. 創建文件對象
tjrq2 = datetime.date.today().__format__('%Y-%m-%d')
c_name ="可轉債"+ tjrq2 + ".csv"
f = open(c_name, '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)
# df = pd.DataFrame(data)
# print(df)