
    fim              	           d Z ddlmZ ddlmZ ddlZddlZddlm	Z	 ddl
m
Z
  e            	 dd	ed
edefd            Z	 dded	ed
edej        fdZedk    r eddd          Z ee           dS dS )u   
Date: 2025/12/8 17:20
Desc: 新浪财经-中行人民币牌价历史数据查询
https://biz.finance.sina.com.cn/forex/forex.php?startdate=2012-01-01&enddate=2021-06-14&money_code=EUR&type=0
    )	lru_cache)StringION)BeautifulSoup)tqdm2021061420230810
start_dateend_datereturnc           
      :   d}d                     | dd         | dd         | dd         g          d                     |dd         |dd         |dd         g          ddd}t          j        ||	          }d
|_        t	          |j        d          }t          t          d |                    ddi          	                    d          D             d |                    ddi          	                    d          D                                 }|S )uS  
    外汇 symbol 和代码映射
    https://biz.finance.sina.com.cn/forex/forex.php?startdate=2012-01-01&enddate=2021-06-14&money_code=EUR&type=0
    :param start_date: 开始交易日
    :type start_date: str
    :param end_date: 结束交易日
    :type end_date: str
    :return: 外汇 symbol 和代码映射
    :rtype: dict
    .http://biz.finance.sina.com.cn/forex/forex.php-N      EUR0)	startdateenddate
money_codetypeparamsgbklxmlc                     g | ]	}|j         
S  )text.0items     T/usr/local/lib/python3.11/dist-packages/akshare/currency/currency_china_bank_sina.py
<listcomp>z*_currency_boc_sina_map.<locals>.<listcomp>,   s*        	      idr   attrsoptionc                     g | ]
}|d          S )valuer   r   s     r!   r"   z*_currency_boc_sina_map.<locals>.<listcomp>0   s,        W  r#   )
joinrequestsgetencodingr   r   dictzipfindfind_all)r	   r
   urlr   rsoup	data_dicts          r!   _currency_boc_sina_mapr6      sC    ;CXXz"1"~z!A#
122OPP88Xbqb\8AaC=(122,GHH	 F 	S(((AAJ((D  IIT<,@IAAJJ8TT    IIT<,@IAAJJ8TT  		
 		
 I r#      美元2023030420231110symbolc           
      <   t          ||          }d}||          dd                    |dd         |dd         |dd         g          d                    |dd         |dd         |dd         g          dd	d
}t          j        ||          }t	          |j        d          }|                    ddi           |                    dddi          }t          |          dk    rt          |d         j                  nd}	t          j                    }
t          t          d|	dz             d          D ]u}|                    d|i           t          j        ||          }t          j        t!          |j                  d          d         }t          j        |
|gd          }
vg d|
_        t          j        |
d         d          j        j        |
d<   t          j        |
d          d          |
d <   t          j        |
d!         d          |
d!<   t          j        |
d"         d          |
d"<   t          j        |
d#         d          |
d#<   t          j        |
d$         d          |
d$<   |
                    dgdd%           |
S )&u  
    新浪财经-中行人民币牌价历史数据查询
    https://biz.finance.sina.com.cn/forex/forex.php?startdate=2012-01-01&enddate=2021-06-14&money_code=EUR&type=0
    :param symbol: choice of {'美元', '英镑', '欧元', '澳门元', '泰国铢', '菲律宾比索', '港币', '瑞士法郎', '新加坡元', '瑞典克朗', '丹麦克朗', '挪威克朗', '日元', '加拿大元', '澳大利亚元', '新西兰元', '韩国元'}
    :type symbol: str
    :param start_date: 开始交易日
    :type start_date: str
    :param end_date: 结束交易日
    :type end_date: str
    :return: 中行人民币牌价历史数据查询
    :rtype: pandas.DataFrame
    )r	   r
   r   r   r   Nr   r   1ajax)r   r   r   r   page	call_typer   r   )featuresr$   r   r%   aclassr>   r      F)leave)headerT)objsignore_index)   日期   中行汇买价   中行钞买价   中行钞卖价/汇卖价   央行中间价   中行折算价rI   coerce)errorsrJ   rK   rL   rM   rN   )byinplacerH   )r6   r*   r+   r,   r   r   r0   r1   lenintpd	DataFramer   rangeupdate	read_htmlr   concatcolumnsto_datetimedtdate
to_numericsort_values)r:   r	   r
   r5   r2   r   r3   r4   page_element_listpage_numbig_dfr>   temp_dfs                r!   currency_boc_sinare   9   s    '*xPPPI
:C'XXz"1"~z!A#
122OPP88Xbqb\8AaC=(122,GHH F 	S(((A&111DIIT<(I)))c'61BCC256G2H2HA2M2Ms$R(-...STH\^^FU1hl++5999 F Fvtn%%%LV,,,,x//:::1= 1EEE  FN ~fX&6xHHHKPF8 "f5F.GPX Y Y YF "f5F.GPX Y Y YF*,-*+H+ + +F&' !#f5F.GPX Y Y YF "f5F.GPX Y Y YF
8*dFFFMr#   __main__)r:   r	   r
   )r   r   )r7   r8   r9   )__doc__	functoolsr   ior   pandasrU   r+   bs4r   r   strr.   r6   rV   re   __name__currency_boc_sina_dfprintr   r#   r!   <module>rp      sE                                  2<# ##,/#	# # # #N KU5 55(+5DG5\5 5 5 5p z,,J   
E
	 r#   