月度債券數據

import requests
from bs4 import BeautifulSoup
import json
import re
import csv

Cookie = "yfx_c_g_u_id_10000042=_ck19090210233412150518192701183; VISITED_MENU=%5B%228451%22%2C%228466%22%2C%2211169%22%2C%228467%22%2C%228468%22%2C%228489%22%2C%228488%22%2C%2211171%22%2C%2211172%22%2C%229881%22%2C%229880%22%5D; yfx_f_l_v_t_10000042=f_t_1567391014184__r_t_1587432339504__v_t_1587439706300__r_c_7"
url = "http://query.sse.com.cn/commonQuery.do?jsonCallBack=jsonpCallback34451&isPagination=true&sqlId=COMMON_BOND_SCSJ_SCTJ_TJYB_JYQK_L&pageHelp.pageSize=20&pageHelp.cacheSize=1&pageHelp.pageNo=1&pageHelp.beginPage=1&pagecache=false&TRADEDATE=2020-03&_=1587439706736"
headers = {
    'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
    'Cookie': Cookie,
    'Connection': 'keep-alive',
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Host': 'query.sse.com.cn',
    'Referer': 'http://www.sse.com.cn/market/bonddata/overview/monthly/'
}                            #可以在瀏覽器F12 network中查到動態網頁數據,複製過來就好了
# gethtml(url,headers):
req = requests.get(url,headers=headers)
req.content.decode('utf-8')
req = req.text
data = re.search(r'"result":([\s\S]*?)$',req).group(1).replace('[','').replace(']','').replace('-','').replace(',"sqlId":"COMMON_BOND_SCSJ_SCTJ_TJYB_JYQK_L","texts":null,"type":"","validateCode":""})','')
data = data.replace(',{',',,{').split(',,')
print(data)
amount = []  #類型    成交筆數    成交金額(萬元)AMOUNT    加權平均價格AVG_PRICE    TRADE_DATE   TYPE
date =[]
cjbs =[]
jqpjjg=[]
type=[]

for i in range(len(data)):
    das = eval(data[i])
    date.append(das["TRADE_DATE"])
    cjbs.append(das["VOLUME"])
    jqpjjg.append(das["AVG_PRICE"])
    amount.append(das["AMOUNT"])
    type.append(das["TYPE"])

f = open('e:\\shuju\\3.csv', 'w', newline="")    #csv數據存儲
writer = csv.writer(f)
writer.writerow(('時間', '類型', '成交筆數', '成交金額(萬元)', '加權平均價格') )            # 類型    成交筆數    成交金額(萬元)    加權平均價格
for i in range(len(data)):
    writer.writerow((date[i],type[i],cjbs[i],amount[i],jqpjjg[i]))

主要是eval轉dict

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章