
    i4                     Z    S r    SSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
 " S S5      rg)zonedata.k(stockcode, period)    Nc                   p    \ rS rSrSS jrS rS rSS jrS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)Onedata   c                 "    Xl         / SQU l        g )N)1530dailyweeklymonthlykdatasource
periodlist)selfr   s     ./Users/mac/Documents/bak/k/oneclass/onedata.py__init__Onedata.__init__   s    &A    c                      g N r   r   r   statusOnedata.status   s    r   c                 V    U R                   S:X  a  U R                  5       nUSS/   n W$ )Nr   	stockcode	stockname)r   hqr   dfs     r   	stocklistOnedata.stocklist   s8     QB[-.B" 	r   c                    / SQn/ SQnU R                   S:X  a  US S nX#;   a  U R                  X5      $ X$;   a  U R                  X5      $ US:X  aP  U R                  US5      u  pVnU R                  US5      nU R                  US5      n	U R                  US	5      n
XXXg4$ U R                   S
:X  a  X#;   a  U R                  X5      $ X$;   a  U R	                  X5      $ US:X  aq  U R                  US5      nU R                  US5      nU R                  US5      nU R	                  US5      nU R	                  US5      n	U R	                  US	5      n
XXXg4$ U R
                  S:X  a  g g )N)r
   r   r   )r   r   r	   r      allr
   r   r   r	      r   r      )r   _Onedata__K_DWM_Onedata__K_OFT_Onedata__web_K_DWM_Onedata__web_K_OFTsource)r   r   period	periodDWM	periodOFTdfddfwdfmdfodffdfts              r   k	Onedata.k9   sx    1	"	QmI"||I55"||I55u} LL7;LL3/LL3/LL40ss..Q"''	99"''	99u}$$Yw7$$Yx8$$Yy9$$Ys3$$Ys3$$Yt4ss..;;> r   c                    ^  [         R                  " 5       nU/ SQ   n/ SQUl        UR                  SSSSS9nUS   R	                  U 4S j5      US'   U$ )N)u   代码u   名称u	   最新价u	   涨跌额u	   涨跌幅)r   r   cvalpctr   r   T)axisby	ascendingignore_indexc                 &   > TR                  U 5      $ r   )_Onedata__format_code)xr   s    r   <lambda>Onedata.hq.<locals>.<lambda>d   s    8J8J18Mr   )akstock_zh_a_spot_emcolumnssort_valuesmapr   s   ` r   r   
Onedata.hq\   sY       "EF<
>>qK$D>Q[/--.MN;	r   c                 ,    [         R                  " 5       $ r   )rD   rE   )r   s    r   bsinfoOnedata.bsinfog   s    $$&&r   c                    [         R                  " XSSSS9nU/ SQ   n/ SQUl        [        R                  " US   5      US'   UR                  S/SS	9  US
   R                  S 5      R                  S5      US
'   US:X  Ga>  US
   R                  S5      R                  5       R                  S5      nUS   R                  S5      R                  5       R                  S5      nUS   R                  S5      R                  5       R                  S5      nUS   R                  S5      R                  5       R                  S5      nUS   R                  S5      R                  5       R                  S5      n[        R                  " XVXxU/SS9n	U	R                  SSS9n	US
   R                  S5      R                  5       R                  S5      n
US   R                  S5      R                  5       R                  S5      nUS   R                  S5      R                  5       R                  S5      nUS   R                  S5      R                  5       R                  S5      nUS   R                  S5      R                  5       R                  S5      n[        R                  " XXU
/SS9nUR                  SSS9nX?U	4$ U$ )N2006010120230118qfq)symbolr,   
start_dateend_dateadjust)u   日期   开盘   收盘   最高   最低	   成交量dateopenclosehighlowvolr[   Tinplacer`   c                     U S-  $ Ni  r   rA   s    r   rB   !Onedata.__K_DWM.<locals>.<lambda>s       AHr      r
   Mr&   r\   r]   r^   r_   r%   )r;   r   any)r;   howzW-FRI)rD   stock_zh_a_histrF   pdto_datetime	set_indexrH   roundresamplesumfirstlastmaxminconcatdropna)r   r   r,   r   mvolmopenmclosemhighmlowdf_mwvolwopenwclosewhighwlowdf_ws                   r   __K_DWMOnedata.__K_DWMk   sr      	Zbluz{HI=
^^BvJ/6

fXt,uIMM"45;;A>5	 7?i((-11399!<Dj))#.446<<Q?Ek**3/446<<Q?Fj))#.224::1=Ei((-11399!<D))UE>QGD++1%+0Di((1557==a@Dj))'288:@@CEk**7388:@@CFj))'2668>>qAEi((1557==a@D99eU$?aHD;;A5;1D4<Ir   c                 6   SnUSS  R                  5       US S -   nUS:X  a  SnUS:X  a  SnUS:X  a  S	nS
U SW S3nU R                  U5      n[        R                  " SSU5      n[        R
                  " U5      n	US:X  d  US:X  d  US:X  d  U	S   U   SU-      nOU	S   U   U   n[        R                  " U5      n
[        R                  " U
/ SQS9nU/ SQ   R                  [        R                  5      R                  S5      U/ SQ'   US   R                  [        R                  5      R                  [        5      US'   [        R                  " US   5      US'   UR!                  S/SS9  US   R#                  S 5      R                  S5      US'   U$ )Nr   r#   r
   dayr   weekr   monthz8http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param=,z,1990-12-01,,2000,qfqz	,{(.+?)}]]sz399001sz399006sh000001datarP   rZ   rF   r\   r]   r^   r_   r&   r`   r[   Tra   c                     U S-  $ rd   r   re   s    r   rB   %Onedata.__web_K_DWM.<locals>.<lambda>   rg   r   rh   )lower_Onedata__gethtmlresubjsonloadsnparrayrm   	DataFrameapply
to_numericrp   astypeintrn   ro   rH   )r   r   r,   my_kurlstockcode	tmpperiodurloriginaltxtgoodtxtmy_jsonarraykr   s               r   __web_K_DWMOnedata.__web_K_DWM   s    ~++-	"1= 7?%	8&	9'	I,WXYbXccxynnS)&&c;7**W%Z'<+C|U_G_6?<0yAD6?<0;D$\\&*YZ/12R/S/Y/YZ\ZgZg/h/n/nop/q+,uIOOBMM299#>5	^^BvJ/6

fXt,uIMM"45;;A>5	 	r   c                    USS  R                  5       US S -   nUS:X  a  SnUS:X  a  SnUS:X  a  SnS	U S
W S3nU R                  U5      n[        R                  " SSU5      nUSS  n[        R
                  " U5      nUS   U   U   n	[        R                  " U	5      n
[        R                  " U
/ SQS9nU/ SQ   R                  [        R                  5      R                  S5      U/ SQ'   US   R                  [        R                  5      R                  [        5      US'   [        R                  " US   5      US'   UR!                  S/SS9  US   R#                  S 5      R                  S5      US'   U R%                  X5        U$ )Nr   r#   r   m1r   m5r	   m30z5http://ifzq.gtimg.cn/appstock/app/kline/mkline?param=r   z$,,320&_var=m1_today&r=0.260880015116z	,{}(.+?)]r   	   r   rZ   r   r   r&   r`   r[   Tra   c                     U S-  $ rd   r   re   s    r   rB   %Onedata.__web_K_OFT.<locals>.<lambda>   rg   r   rh   )r   r   r   r   r   r   r   r   rm   r   r   r   rp   r   r   rn   ro   rH   _Onedata__wash_K_div)r   r   r,   r   r   r   r   r   r   r   r   r   s               r   __web_K_OFTOnedata.__web_K_OFT   s~    ~++-	"1=3;dI3;dI4<eIF|nTUV_U`  aE  FnnS)&&c;7!"+**W%v|,Y7$\\&*YZ/12R/S/Y/YMM0 58 	+,uIOOBMM299#>5	^^BvJ/6

fXt,uIMM"45;;A>5	 	"'	r   c                 <   U R                  U5      nUR                  5        H  u  pEU[        R                  " SS9-
  nXaR                  S   :  a    U$ UR
                  R                   H  nUS:w  d  M  US:w  d  M  UR                  S U2U4==   UR                  S-  -  ss'   UR                  S U2U4==   UR                  UR                  S-  -  -  ss'   UR                  S U2U4==   SUR                  S-  -   UR                  S-  -   -  ss'   M     M     U$ )Nr%   )minutesr   volumeamount
   )_Onedata__get_diviterrowsdatetime	timedeltaindexrF   valueslocbonuspricerationedpresent)r   kdatar   divpdkeyr9   r[   fields           r   __wash_K_divOnedata.__wash_K_div   s    ~~i((HC++A66Dkk!n$e  --H$():IIeteUl+syy2~=+IIeteUl+syyCLL2<M/NN+IIftfem,CKK"4D0Ds||VXGX0XX,	 . ) r   c                     [         R                  " S5      nX"S   U:H     n[         R                  " US   5      US'   UR                  S5      nUR	                  SS9nU$ )Nz./csv/divdata.csvcoder[   F)r=   )rm   read_csvrn   ro   
sort_index)r   r   r   s      r   	__get_divOnedata.__get_div   s^    01Fmy01uV}5f'  5 1r   c                 *   SnUS:  a"   [         R                  " USS9R                  nU$ US:X  a  [        SU SU S35        US:  a  US:w  a  [        U S	U S
35        ggg! [         R                  R                   a    US-  n Of = fUS:  a  M  Nj)u   
最多读取10次，每次等待3秒钟
如果超过3次没有抓到K线数据，就把 i+url 输出到htmlerror.txt文件中
每次程序开始运行的时候，清空 htmlerror.txt 文件
r   r   rh   )timeoutr%   u	   尝试过u   次后，依然没有通过u   得到数据u
    次通过u    没有得到数据N)requestsgettext
exceptionsRequestExceptionprint)r   r   ihtmls       r   	__gethtmlOnedata.__gethtml   s     "f||C388 b5IaS ;C5MNq5QUQCz#&9:; 5	 &&77 Q	 "fs    A# ##B	B	c                    SnSn[         R                  " USSUSS9nUSS  nU/ SQ   n/ SQUl        US   R                  S	 5      R	                  S
5      US'   [
        R                  " US   5      US'   UR                  S/SS9  U$ )N z2023-01-01 09:30:00z2024-01-16 15:00:00)rQ   rR   rS   r,   rT   i)u   时间rU   rV   rW   rX   rY   rZ   r`   c                     U S-  $ rd   r   re   s    r   rB   !Onedata.__K_OFT.<locals>.<lambda>   rg   r   rh   r[   Tra   )rD   stock_zh_a_hist_min_emrF   rH   rp   rm   rn   ro   )r   r   r,   
start_timeend_timer   s         r   __K_OFTOnedata.__K_OFT   s     
&&iDYdy  CI  RT  Ude9HI=
uIMM"45;;A>5	^^BvJ/6

fXt, 	r   c                     [        U5      S:X  a  U$ USS S:X  a  US-   $ USS S:X  d	  USS S:X  a  US-   $ USS S	:X  d	  USS S
:X  a  US-   $ g )Nr   r   r%   6z.SH84z.BJ03z.SZ)len)r   scodes     r   __format_codeOnedata.__format_code  st    u:q=L1:s?;1QZ_a
C;1QZ_a
C; !0r   r   N)r   )z	300027.SZr
   )__name__
__module____qualname____firstlineno__r   r   r    r5   r   rK   r'   r)   r*   r   r   r   r(   r@   __static_attributes__r   r   r   r   r      sK    B6!F	'B:8"<&"	r   r   )__doc__aksharerD   pandasrm   numpyr   r   r   r   r   r   r   r   r   <module>r      s8    "          w wrr   