Files
MoFin/venv/lib/python3.12/site-packages/akshare/economic/macro_info_ws.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

101 lines
3.0 KiB
Python

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Date: 2024/5/15 18:20
Desc: 华尔街见闻-日历-宏观
https://wallstreetcn.com/calendar
"""
from datetime import datetime, timedelta
import numpy as np
import pandas as pd
import requests
def __convert_date_format(date: str) -> str:
"""
将日期字符串从格式'%Y%m%d'转换为格式'%Y-%m-%d %H:%M:%S'
:param date: 日期字符串,格式为'%Y%m%d'
:return: 转换后的日期字符串,格式为'%Y-%m-%d %H:%M:%S'
"""
datetime_obj = datetime.strptime(date, "%Y%m%d")
return datetime_obj.strftime("%Y-%m-%d %H:%M:%S")
def __format_date(date: str) -> int:
"""
将日期字符串转换为Unix时间戳。
:param date: 日期字符串,格式为'%Y-%m-%d %H:%M:%S'
:return: Unix时间戳
"""
datetime_obj = datetime.strptime(date, "%Y-%m-%d %H:%M:%S")
return int(datetime_obj.timestamp())
def macro_info_ws(date: str = "20240514") -> pd.DataFrame:
"""
华尔街见闻-日历-宏观
https://wallstreetcn.com/calendar
:param date: 日期
:type date: str
:return: 日历-宏观
:rtype: pandas.DataFrame
"""
date = __convert_date_format(date)
url = "https://api-one-wscn.awtmt.com/apiv1/finance/macrodatas"
datetime_obj = datetime.strptime(date, "%Y-%m-%d %H:%M:%S")
one_day = timedelta(days=1)
new_datetime = datetime_obj + one_day
date_str = new_datetime.strftime("%Y-%m-%d %H:%M:%S")
params = {"start": __format_date(date), "end": __format_date(date_str)}
r = requests.get(url, params=params)
data_json = r.json()
temp_df = pd.DataFrame(data_json["data"]["items"])
temp_df["public_date"] = pd.to_datetime(
temp_df["public_date"], errors="coerce", unit="s", utc=True
).dt.tz_convert("Asia/Shanghai")
temp_df["public_date"] = temp_df["public_date"].dt.strftime("%Y-%m-%d %H:%M:%S")
temp_df = temp_df.rename(
columns={
"public_date": "时间",
"country": "地区",
"title": "事件",
"importance": "重要性",
"actual": "今值",
"forecast": "预期",
"previous": "前值",
"revised": "修正",
"uri": "链接",
}
)
temp_df = temp_df[
[
"时间",
"地区",
"事件",
"重要性",
"今值",
"预期",
"前值",
"修正",
"链接",
]
]
temp_df["今值"] = pd.to_numeric(temp_df["今值"], errors="coerce")
temp_df["预期"] = pd.to_numeric(temp_df["预期"], errors="coerce")
temp_df["前值"] = pd.to_numeric(temp_df["前值"], errors="coerce")
temp_df["修正"] = pd.to_numeric(temp_df["修正"], errors="coerce")
temp_df["前值"] = np.where(
temp_df["修正"].notnull(), temp_df["修正"], temp_df["前值"]
)
del temp_df["修正"]
return temp_df
if __name__ == "__main__":
macro_info_ws_df = macro_info_ws(date="20240514")
print(macro_info_ws_df)