fa45d8aa5f
- 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,直连正常
69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2025/9/28 13:30
|
|
Desc: 新浪财经-日内分时数据
|
|
https://quote.eastmoney.com/f1.html?newcode=0.000001
|
|
"""
|
|
|
|
import math
|
|
|
|
import pandas as pd
|
|
import requests
|
|
|
|
from akshare.utils.tqdm import get_tqdm
|
|
|
|
|
|
def stock_intraday_sina(
|
|
symbol: str = "sz000001", date: str = "20240321"
|
|
) -> pd.DataFrame:
|
|
"""
|
|
新浪财经-日内分时数据
|
|
https://vip.stock.finance.sina.com.cn/quotes_service/view/cn_bill.php?symbol=sz000001
|
|
:param symbol: 股票代码
|
|
:type symbol: str
|
|
:param date: 交易日
|
|
:type date: str
|
|
:return: 分时数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_Bill.GetBillListCount"
|
|
params = {
|
|
"symbol": f"{symbol}",
|
|
"num": "60",
|
|
"page": "1",
|
|
"sort": "ticktime",
|
|
"asc": "0",
|
|
"volume": "0",
|
|
"amount": "0",
|
|
"type": "0",
|
|
"day": "-".join([date[:4], date[4:6], date[6:]]),
|
|
}
|
|
headers = {
|
|
"Referer": f"https://vip.stock.finance.sina.com.cn/quotes_service/view/cn_bill.php?symbol={symbol}",
|
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/107.0.0.0 Safari/537.36",
|
|
}
|
|
r = requests.get(url=url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
total_page = math.ceil(int(data_json) / 60)
|
|
url = "https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_Bill.GetBillList"
|
|
big_df = pd.DataFrame()
|
|
tqdm = get_tqdm()
|
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
params.update({"page": page})
|
|
r = requests.get(url=url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json)
|
|
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
big_df.sort_values(by=["ticktime"], inplace=True, ignore_index=True)
|
|
big_df["price"] = pd.to_numeric(big_df["price"], errors="coerce")
|
|
big_df["volume"] = pd.to_numeric(big_df["volume"], errors="coerce")
|
|
big_df["prev_price"] = pd.to_numeric(big_df["prev_price"], errors="coerce")
|
|
return big_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
stock_intraday_sina_df = stock_intraday_sina(symbol="sz000001", date="20250926")
|
|
print(stock_intraday_sina_df)
|