Files
MoFin/venv/lib/python3.12/site-packages/akshare/option/option_comm_qihuo.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

87 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Date: 2024/7/5 15:00
Desc: 九期网-商品期权手续费
https://www.9qihuo.com/qiquanshouxufei
"""
from functools import lru_cache
from io import StringIO
import pandas as pd
import requests
from bs4 import BeautifulSoup
@lru_cache()
def option_comm_symbol() -> pd.DataFrame:
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
url = "https://www.9qihuo.com/qiquanshouxufei"
r = requests.get(url, verify=False)
soup = BeautifulSoup(r.text, features="lxml")
name = [
item.string.strip()
for item in soup.find(name="div", attrs={"id": "inst_list"}).find_all(name="a")
]
code = [
item["href"].split("?")[1].split("=")[1]
for item in soup.find(name="div", attrs={"id": "inst_list"}).find_all(name="a")
]
temp_df = pd.DataFrame([name, code]).T
temp_df.columns = ["品种名称", "品种代码"]
return temp_df
def option_comm_info(symbol: str = "工业硅期权") -> pd.DataFrame:
"""
九期网-商品期权手续费
https://www.9qihuo.com/qiquanshouxufei
:param symbol: choice of {"所有", "上海期货交易所", "大连商品交易所", "郑州商品交易所", "上海国际能源交易中心", "广州期货交易所"}
:type symbol: str
:return: 期权手续费
:rtype: pandas.DataFrame
"""
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
symbol_df = option_comm_symbol()
symbol_str = symbol_df[symbol_df["品种名称"].str.contains(symbol)][
"品种代码"
].values[0]
params = {"heyue": symbol_str}
url = "https://www.9qihuo.com/qiquanshouxufei"
r = requests.get(url, params=params, verify=False)
temp_df = pd.read_html(StringIO(r.text))[0]
market_symbol = temp_df.iloc[0, 0]
columns = temp_df.iloc[2, :]
temp_df = temp_df.iloc[3:, :]
temp_df.columns = columns
temp_df["交易所"] = market_symbol
temp_df.reset_index(drop=True, inplace=True)
temp_df.index.name = None
temp_df.columns.name = None
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")
soup = BeautifulSoup(r.text, features="lxml")
raw_date_text = soup.find(name="a", attrs={"id": "dlink"}).previous
comm_update_time = raw_date_text.split("")[0].strip("(手续费更新时间:")
price_update_time = (
raw_date_text.split("")[1].strip("价格更新时间:").strip("。)")
)
temp_df["手续费更新时间"] = comm_update_time
temp_df["价格更新时间"] = price_update_time
return temp_df
if __name__ == "__main__":
option_comm_symbol_df = option_comm_symbol()
print(option_comm_symbol_df)
option_comm_info_df = option_comm_info(symbol="工业硅期权")
print(option_comm_info_df)