一 功能介绍
功能:获取沪股通、深股通历史数据、合并数据
数据来源:同花顺
https://eq.10jqka.com.cn/hgt/data/method/historyConnectData/type/hs/page/{}/
编程语言:Python
数据处理工具:Pandas
输出结果文件格式:CSV
二 关键代码
import requests
import pandas as pd
import time
#沪股通&深股通
def download_hgt_sgt_history_data():
hgt_list = []
sgt_list = []
i = 1
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"
}
while True:
url = "https://eq.10jqka.com.cn/hgt/data/method/historyConnectData/type/hs/page/{}/".format(i)
response = requests.get(url, headers=headers)
data = response.json()
if len(data["hgt"]) == 0:
break
hgt_list += data["hgt"]
sgt_list += data["sgt"]
print("{}完成!!".format(i))
i += 1
time.sleep(1)
hgt_df = pd.DataFrame(hgt_list)
sgt_df = pd.DataFrame(sgt_list)
rename_columns = {
"date": "交易日期", "inflow": "当日港资净流入", "net_purchase": "当日净买入额",
"total_inflow": "历史港资累计净流入", "index": "指数收盘价", "index_change": "指数涨跌幅",
"over": "剩余额度", "buy": "当日买入额度", "sell": "当日卖出额度"
}
#把列名称修改成中文
hgt_df.rename(columns=rename_columns, inplace=True)
sgt_df.rename(columns=rename_columns, inplace=True)
#按日期排序
hgt_df.sort_values("交易日期", inplace=True)
sgt_df.sort_values("交易日期", inplace=True)
#保存到CSV文件中
hgt_df.to_csv("沪股通历史数据.csv", index=False, encoding="utf-8")
sgt_df.to_csv("深股通历史数据.csv", index=False, encoding="utf-8")
# 合并数据
#how="right"表示右连接
print(hgt_df)
print(hgt_df[["交易日期"]].to_string())
sgt_df = pd.merge(left=sgt_df, right=hgt_df[["交易日期"]], how="right")
sgt_df.sort_values("交易日期", inplace=True)
#'ffill' 就是将缺失值按照前面一个值进行填充
sgt_df["历史港资累计净流入"].fillna(method="ffill", inplace=True)
sgt_df.fillna(value=0, inplace=True)
hgt_df.set_index("交易日期", inplace=True)
sgt_df.set_index("交易日期", inplace=True)
df = pd.DataFrame()
add_columns = ["当日港资净流入", "当日净买入额", "历史港资累计净流入", "剩余额度", "当日买入额度", "当日卖出额度", "total"]
hgt_df[add_columns] = hgt_df[add_columns].astype("float")
sgt_df[add_columns] = sgt_df[add_columns].astype("float")
for column in add_columns:
df[column] = hgt_df[column] + sgt_df[column]
#重置索引时,将旧索引添加为列,并使用新的顺序索引
df.reset_index(inplace=True)
df.sort_values(by="交易日期", inplace=True)
#使用drop参数来避免将旧索引添加为列
df.reset_index(drop=True, inplace=True)
df.to_csv("陆股通历史数据.csv", index=False, encoding="utf-8")
if __name__ == '__main__':
download_hgt_sgt_history_data()
三 输出结果