
    fiG                        d Z ddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmZ defdZdej        fdZ	 	 	 	 d1dededededej        f
dZ	 	 	 d2dedededej        fdZ	 d3dedededej        fdZedk    rC edddd          Z ee            edd d!d"          Z ee            ed#d$d%&          Z  ee             edd'(          Z! ee!            edd)(          Z" ee"            edd)(          Z# ee#            ed*d+d,d          Z$ ee$            edd-d.&          Z% ee%            e            Z& ee&            ed/dd"0          Z' ee'            eddd0          Z' ee'            ed/dd0          Z' ee'            edd
d&          Z% ee%           dS dS )4u   
Date: 2026/1/9 22:00
Desc: 新浪财经-A股-实时行情数据和历史行情数据(包含前复权和后复权因子)
https://finance.sina.com.cn/realstock/company/sh689009/nc.shtml
    N)zh_sina_a_stock_payloadzh_sina_a_stock_urlzh_sina_a_stock_count_urlzh_sina_a_stock_hist_urlhk_js_decodezh_sina_a_stock_hfq_urlzh_sina_a_stock_qfq_urlzh_sina_a_stock_amount_url)demjson)get_tqdmreturnc                  
   t          j        t                    } t          t	          j        t	          j        d          | j                  d                   dz  }t          |t                    r|S t          |          dz   S )u   
    所有股票的总页数
    https://vip.stock.finance.sina.com.cn/mkt/#hs_a
    :return: 需要采集的股票总页数
    :rtype: int
    z\d+r   P      )	requestsgetr   intrefindallcompiletext
isinstance)res
page_counts     H/usr/local/lib/python3.11/dist-packages/akshare/stock/stock_zh_a_sina.py_get_zh_a_page_countr      sl     ,0
1
1CRZ
6 2 2CH==a@AABFJ*c"" #:""    c                  h   t          j                    } t                      }t          j                    }t                      } |t          d|dz             dd          D ]w}|                    d|i           t          j	        t          |          }t          j        |j                  }t          j        | t          j        |          gd          } x|                     i d	d
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
          } g d| _        | g d         } | S )u   
    新浪财经-所有 A 股的实时行情数据; 重复运行本函数会被新浪暂时封 IP
    https://vip.stock.finance.sina.com.cn/mkt/#hs_a
    :return: 所有股票的实时行情数据
    :rtype: pandas.DataFrame
    r   FzPlease wait for a moment)leavedescpageparamsT)objsignore_indextradefloatpricechangechangepercentbuysell
settlementopenhighlowvolumeamountperpbmktcapnmcturnoverratio)   代码_   名称	   最新价	   涨跌额	   涨跌幅   买入   卖出   昨收   今开   最高   最低	   成交量	   成交额	   时间戳r8   r8   r8   r8   r8   )r7   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   )pd	DataFramer   r   copyr   rangeupdater   r   r   r   decoder   concatastypecolumns)big_dfr   zh_sina_stock_payload_copytqdmr!   r	data_jsons          r   stock_zh_a_spotrT   -   s    \^^F%''J!8!=!?!?::Daa  4N   V V 	#))64.999L,5OPPPN16**	i)@)@ APTUUU]]	
W	
7	
 W	
 7		

 G	
 '	
 G	
 G	
 7	
 g	
 g	
 7	
 '	
 g	
 7	
  W!	
 F(  FN, 	
 	
 	
F$ Mr   sh6038431990010121000118 symbol
start_dateend_dateadjustc                 x    dt           dt          j        f fd}|dv r$ ||                    d          d                   S t	          j        t          j                             }t          j	                    }|
                    t                     |                    d|j                            d          d	                             d
          d                             dd                    }t          j        |          }t          j        |d         d          j        j        |_        |d= 	 |d= n#  Y nxY w	 |d= |d= n#  Y nxY w|                    d          }t	          j        t)          j                              }t+          j        |j        |j                            d          |j                            d          d	z                      }	t          j        |	          }
ddg|
_        t          j        |
j                  |
_        |
d= t          j        ||
ddd          }|                    d           |                    t8                    }|d         dz  |d<   |d         |d         z  |d<   g d|_        |dk    r|||         }|                    g dd            t=          |d!         d"          |d!<   t=          |d#         d"          |d#<   t=          |d$         d"          |d$<   t=          |d%         d"          |d%<   |                    d           |                    d           |                     d           t          j        |d         d          j        j        |d<   |S |d&k    rNt	          j        tC          j                             }t          j        t          |j                            d          d	                             d'          d                   d(                   }dd)g|_        t          j        |j                  |_        |d= t          j        ||ddd          }|                    d           |                    t8                    }|                    d           |                    g dd            |d!         |d)         z  |d!<   |d#         |d)         z  |d#<   |d%         |d)         z  |d%<   |d$         |d)         z  |d$<   |j"        d*d*d*d+f         }|||         }t=          |d!         d"          |d!<   t=          |d#         d"          |d#<   t=          |d$         d"          |d$<   t=          |d%         d"          |d%<   |                    d           |                     d           t          j        |d         d          j        j        |d<   |S |d,k    rNt	          j        tG          j                             }t          j        t          |j                            d          d	                             d'          d                   d(                   }dd-g|_        t          j        |j                  |_        |d= t          j        ||ddd          }|                    d           |                    t8                    }|                    d           |                    g dd            |d!         |d-         z  |d!<   |d#         |d-         z  |d#<   |d%         |d-         z  |d%<   |d$         |d-         z  |d$<   |j"        d*d*d*d+f         }|||         }t=          |d!         d"          |d!<   t=          |d#         d"          |d#<   t=          |d$         d"          |d$<   t=          |d%         d"          |d%<   |                    d           |                     d           t          j        |d         d          j        j        |d<   |S d*S ).ue  
    新浪财经-A 股-个股的历史行情数据, 大量抓取容易封 IP
    https://finance.sina.com.cn/realstock/company/sh603843/nc.shtml
    :param symbol: sh600000
    :type symbol: str
    :param start_date: 20201103; 开始日期
    :type start_date: str
    :param end_date: 20201103; 结束日期
    :type end_date: str
    :param adjust: 默认为空: 返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; hfq-factor: 返回后复权因子; qfq-factor: 返回前复权因子
    :type adjust: str
    :return: 行情数据
    :rtype: pandas.DataFrame
    methodr   c                    | dk    rt          j        t          j                            }t	          j        t          |j                            d          d                             d          d                   d                   }|j	        d         dk    rt          d          dd	g|_        t	          j        |j                  |_        |d= |                    d
           |S t          j        t!          j                            }t	          j        t          |j                            d          d                             d          d                   d                   }|j	        d         dk    rt          d          ddg|_        t	          j        |j                  |_        |d= |                    d
           |S )Nhfq=r   
r   datazsina hfq factor not availabledate
hfq_factorTinplace
qfq_factor)r   r   r   formatrF   rG   evalr   splitshape
ValueErrorrN   to_datetimerd   indexreset_indexr	   )r^   rR   hfq_factor_dfqfq_factor_dfrY   s       r   
_fq_factorz$stock_zh_a_daily.<locals>._fq_factor   s   U??4;FCCDDALQV\\#&&q)//55a899&A M "1%** !@AAA%+\$:M!"$.1C"D"DMf%%%d%333  4;FCCDDALQV\\#&&q)//55a899&A M "1%** !@AAA%+\$:M!"$.1C"D"DMf%%%d%333  r   )
hfq-factor
qfq-factor-r   dra   r   ;"rX   rd   coerce)errors	prevclosepostVolpostAmtr'   []outstanding_shareTouter)
left_indexright_indexhowrf   i'  r0   turnover)r-   r.   r/   closer0   r1   r   r   )r-   r.   r/   r   r0   r1   )subsetrg   r-      r.   r/   r   r`   rb   rc   re   Nqfqrh   )$strrF   rG   rk   r   r   r   ri   py_mini_racer	MiniRacerrj   r   callr   replacern   dtrd   ro   rM   r
   r   rK   findrfindrN   mergeffillr'   drop_duplicatesrounddropnarp   r   ilocr	   )rY   rZ   r[   r\   rs   rR   js_code	dict_listdata_dfamount_data_jsonamount_data_dftemp_dfr   rq   rr   s   `              r   stock_zh_a_dailyr      sY   *!3 !2< ! ! ! ! ! !4 ---z&,,s++A.///-4V<<==A%''GLLQV\\#q!'',,Q/77R@@ I l9%%GN76?8DDDGLGMK  IInnW%%G/6vvFFGGA~afQV[[-=-=S@Q@QTU@U-U&VWW\"233N$&9:N>.*=>>NvhDd  G MM$MnnU##G#*+>#?%#GG !(+g6I.JJGJ	 	 	GO ||*X-.GGGQU 	  	
 	
 	
  3333wu~q11 !1155t$$$---D))).JJJMRl29&AABB$$Q'--d33A677?
 
 "( 6 n]-?@@&!(
 
 
 	d###..''t$$$GGGQU 	  	
 	
 	
 "&/GL,AA!&/GL,AA"7+gl.CC ',*??,qqq#2#v&*X-.3333wu~q11 !1155t$$$D))).JJJMRl29&AABB$$Q'--d33A677?
 
 "( 6 n]-?@@&!(
 
 
 	d###..''t$$$GGGQU 	  	
 	
 	
 "&/GL,AA!&/GL,AA"7+gl.CC ',*??,qqq#2#v&*X-.3333wu~q11 !1155t$$$D))).JJJMRE s   :D> >EE Esh68900922201116c                 z   t          j        t          j        |                     }t	          j                    }|                    t                     |                    d|j	        
                    d          d         
                    d          d                             dd                    }t          j        |          }t          j        |d                   |_        |d= |                    d	          }|||                                         }t          j        |d
                   |d
<   t          j        |d                   |d<   t          j        |d                   |d<   t          j        |d                   |d<   |                    d           |d         j        j        |d<   |S )u  
    新浪财经-A股-CDR个股的历史行情数据, 大量抓取容易封 IP
    https://finance.sina.com.cn/realstock/company/sh689009/nc.shtml
    :param start_date: 20201103; 开始日期
    :type start_date: str
    :param end_date: 20201103; 结束日期
    :type end_date: str
    :param symbol: sh689009
    :type symbol: str
    :return: specific data
    :rtype: pandas.DataFrame
    rw   ra   r   rx   r   ry   rX   rd   r'   r-   r.   r/   r   Trf   )r   r   r   ri   r   r   rj   r   r   r   rk   r   rF   rG   rn   ro   rM   rH   
to_numericrp   r   rd   )rY   rZ   r[   r   r   r   r   r   s           r   stock_zh_a_cdr_dailyr   2  ss   " ,/6v>>
?
?C%''GLLSX^^C  #))#..q199#rBB I l9%%GN76?33GMnnW%%Gj)*//11GmGFO44GFOmGFO44GFO]75>22GEN}WW%566GG%%%fo(-GFONr   sh6005191periodc                    d}| |ddd}t          j        ||          }|j        }	 t          j        |                    d          d                             d          d	                   }t          j        |          j        d
d
d
df         }n#  d|  d| d}| |ddd}t          j        ||          }|j        }t          j        |                    d          d                             d          d	                   }t          j        |          j        d
d
d
df         }Y nxY w|j	        r%t          |  d           t          j                    S 	 t          | d           n	#  |cY S xY w|dk    r|S |dk    r|d         j                            dd          |ddg<   |d |d         D                      }	|	                    dgdd           t          j        |	d                   |	_        t          | d          }
t          j        |
d                   |
_        |
j        t!          |	           d
d
d
f         d                             t$                    |	d                             t$                    z  }t          j        |d                   |_        t          j        ||dd          }|d                             t$                    |d         z  |d<   |d                              t$                    |d         z  |d <   |d!                             t$                    |d         z  |d!<   |d"                             t$                    |d         z  |d<   |g d#         }|                    dd$           |S |d%k    r|d         j                            dd          |ddg<   |d& |d         D                      }	|	                    dgdd           t          j        |	d                   |	_        t          | d%          }t          j        |d                   |_        |j        t!          |	           d
d
d
f         d                             t$                    |	d                             t$                    z  }t          j        |d                   |_        t          j        ||dd          }|d                             t$                    |d         z  |d<   |d                              t$                    |d         z  |d <   |d!                             t$                    |d         z  |d!<   |d"                             t$                    |d         z  |d<   |g d#         }|                    dd$           |S t          j                    S )'u  
    股票及股票指数历史行情数据-分钟数据
    https://finance.sina.com.cn/realstock/company/sh600519/nc.shtml
    :param symbol: sh000300
    :type symbol: str
    :param period: 1, 5, 15, 30, 60 分钟的数据
    :type period: str
    :param adjust: 默认为空: 返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据;
    :type adjust: str
    :return: specific data
    :rtype: pandas.DataFrame
    zNhttps://quotes.sina.cn/cn/api/jsonp_v2.php/=/CN_MarketDataService.getKLineDatano1970)rY   scalemadatalenr"   z=(r   z);r   N   z2https://quotes.sina.cn/cn/api/jsonp_v2.php/var%20_r8   z1_1658852984203=/CN_MarketDataService.getKLineDatau1    股票数据不存在，请检查是否已退市r   rY   r\   rX   day T)expandrd   timec                 6    g | ]}d |cxk    rdk    rn ndndS z09:31:00z15:00:00TF .0items     r   
<listcomp>z%stock_zh_a_minute.<locals>.<listcomp>  M        #d8888j88888e  r   last)r   keeprg   r   )r   r   r-   close_yr.   r/   close_x)r   r-   r.   r/   r   r0   r1   )droprg   r`   c                 6    g | ]}d |cxk    rdk    rn ndndS r   r   r   s     r   r   z%stock_zh_a_minute.<locals>.<listcomp>  r   r   )r   r   r   jsonloadsrk   rF   rG   r   emptyprintr   r   r   rn   ro   lenrM   r'   r   rp   )rY   r   r\   urlr#   rR   	data_textrS   r   need_dfstock_zh_a_daily_qfq_df	result_df	merged_dfstock_zh_a_daily_hfq_dfs                 r   stock_zh_a_minuter   W  s     	Y  	 F 	S(((AI6Jyt44Q7==dCCAFGG	,y)).qqq"1"u56 F6  F  FF  F  F  F	
 
 LV,,,F	Jyt44Q7==dCCAFGG	,y)).qqq"1"u5} JJJKKK|~~u55555||$+EN$6$<$<S$<$N$N ! #FO  
 	xfdKKKwv77"2&"O"O"O(*7Nv7V(W(W%+0#g,,!!!1CDWMTT
 
G##E**+	 wv77HWiDdSSS	%f-44U;;i	>RR	&%f-44U;;i	>RR	&$U+22599Ii<PP	%&y188??)IBVV	'WWWXt444$+EN$6$<$<S$<$N$N ! #FO  
 	xfdKKKwv77"2&"O"O"O(*7Nv7V(W(W%+0#g,,!!!1CDWMTT
 
G##E**+	 wv77HWiDdSSS	%f-44U;;i	>RR	&%f-44U;;i	>RR	&$U+22599Ii<PP	%&y188??)IBVV	'WWWXt444|~~s   A+B BD0 E2 2E8__main__sz0000021991040320260109r`   )rY   rZ   r[   r\   sz0000011990010320210118r   sh0000012010110320210510)rY   rZ   r[   ru   r   rt   sz30079820200601202311012020110320201116sh600751)rY   r   r\   )rU   rV   rW   rX   )r   rV   r   )r   r   rX   )(__doc__r   r   pandasrF   r   r   akshare.stock.consr   r   r   r   r   r   r	   r
   akshare.utilsr   akshare.utils.tqdmr   r   r   rG   rT   r   r   r   r   __name__stock_zh_a_daily_hfq_df_oner   stock_zh_a_daily_hfq_df_threestock_zh_a_daily_hfq_df_tworr   rq   stock_zh_a_daily_hfq_factor_dfstock_zh_a_daily_dfstock_zh_a_cdr_daily_dfstock_zh_a_spot_dfstock_zh_a_minute_dfr   r   r   <module>r      s     				         	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 " ! ! ! ! ! ' ' ' ' ' '#c # # # #O O O O Of  	p ppp p 	p
 \p p p ph  " """ " \	" " " "L @Bg gg&)g9<g\g g g gT z"2"2	# # # 
E
%&&&$4$4	% % %! 
E
'((("2"2j:# # # 
E
%&&&$$J|LLLM	E-$$J|LLLM	E-%5%5,& & &" 
E
()))**j:e   
E
22j:   
E
!"""(**	E
,,#e   
E
,,#e   
E
,,#b   
E
22j:   
E
!"""""A r   