Ë
    0�£j  ã                   ó�  — d dl mZmZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Ze	j                  rd dlZ	  G d„ de«      Z G d„ de«      Zedk(  rtd dl
Zd d	lmZ  e«       Zej'                  e¬
«      Z ej*                  e¬«      Z eed   «        eed   j0                  j3                  d«      j5                  «       «       yy)é    )ÚcalcsizeÚunpack)ÚBaseCralwerNc                   ó&   — e Zd Zd„ Zd„ Zdd„Zd„ Zy)ÚHistoryFinancialListCrawlerc                 ó   — d| _         y ©NÚcontent©Úmode©Úselfs    úIC:\FundamentalWorkbench\vendor\pytdx\crawler\history_financial_crawler.pyÚ__init__z$HistoryFinancialListCrawler.__init__   ó	   € Øˆ�	ó    c                  ó   — y)NzChttps://gitee.com/yutiansut/QADATA/raw/master/financial/content.txt© )r   ÚargsÚkwargss      r   Úget_urlz#HistoryFinancialListCrawler.get_url   s   € ØTr   Nc                 ó.  — ddl m}  |«       }d|_        |j                  d¬«      5  |j	                  d«      }	|€t        j                  d¬«      }
nt        |d	«      }
|
j                  |	«       |
j                  d«       |
cd d d «       S # 1 sw Y   y xY w)
Nr   ©Ú	TdxHq_APIFú120.76.152.87©Úipztdxfin/gpcw.txtT©ÚdeleteÚwb)
Úpytdx.hqr   Ú
need_setupÚconnectÚget_report_file_by_sizeÚtempfileÚNamedTemporaryFileÚopenÚwriteÚseek)r   Ú
reporthookÚpath_to_downloadÚproxiesÚ	chunksizer   r   r   Úapir
   Údownload_files              r   Úget_contentz'HistoryFinancialListCrawler.get_content   s€   € Ý&Ù‹kˆØˆŒà�[‰[˜Oˆ[Õ,Ø×1Ñ1Ð2CÓDˆGØÐ'Ü (× ;Ñ ;À4Ô H‘ä $Ð%5°tÓ <�Ø×Ñ Ô(Ø×Ñ˜qÔ!Ø ÷ -×,Ò,ús   §ABÂBc                 ó  — |j                  «       }|j                  d«      }d„ }|j                  «       j                  d«      D �cg c]!  }|j                  «       j                  d«      ‘Œ# c}D �cg c]
  } ||«      ‘Œ }}|S c c}w c c}w )Núutf-8c                 ó2   — | d   | d   t        | d   «      dœS )Nr   é   é   )ÚfilenameÚhashÚfilesize)Úint)Úls    r   Úlist_to_dictz7HistoryFinancialListCrawler.parse.<locals>.list_to_dict1   s%   € à˜a™DØ˜!™Ü  !¡›Iñð r   Ú
Ú,)ÚreadÚdecodeÚstripÚsplit)	r   r/   r   r   r
   r;   Úliner:   Úresults	            r   Úparsez!HistoryFinancialListCrawler.parse-   s†   € Ø×$Ñ$Ó&ˆØ—.‘. Ó)ˆò	ð QX×P]ÑP]ÓP_×PeÑPeÐfjÔPkÓ+lÑPkÈ¨D¯J©J«L×,>Ñ,>¸sÕ,CÐPkÒ+lÓmÑ+l a‘,˜q•/Ð+lˆÐmØˆùò ,mùÒms   Á&BÁ1B	©NNNi È  )Ú__name__Ú
__module__Ú__qualname__r   r   r0   rD   r   r   r   r   r      s   „ òòUó!ór   r   c                   ó,   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚHistoryFinancialCrawlerc                 ó   — d| _         y r	   r   r   s    r   r   z HistoryFinancialCrawler.__init__=   r   r   c                 óN   — d|v r|d   }nt        d«      ‚dj                  |«      S )Nr6   úParam filename is not setzhttp://data.yutiansut.com/{})Ú	ExceptionÚformat)r   r   r   r6   s       r   r   zHistoryFinancialCrawler.get_url@   s1   € Ø˜ÑØ˜jÑ)‰HäÐ7Ó8Ð8à-×4Ñ4°XÓ>Ð>r   Nc                 ó|  — d|v r|d   }nt        d«      ‚d|v r|d   }nd}ddlm}	  |	«       }
d|
_        |
j	                  d¬«      5  |
j                  d	|z   ||¬
«      }|€t        j                  d¬«      }nt        |d«      }|j                  |«       |j                  d«       |cd d d «       S # 1 sw Y   y xY w)Nr6   rM   r8   r   r   Fr   r   ztdxfin/)r8   r*   Tr   r    )rN   r!   r   r"   r#   r$   r%   r&   r'   r(   r)   )r   r*   r+   r,   r-   r   r   r6   r8   r   r.   r
   r/   s                r   r0   z#HistoryFinancialCrawler.get_contentI   sÂ   € Ø˜ÑØ˜jÑ)‰HäÐ7Ó8Ð8à˜ÑØ˜jÑ)‰HàˆHå&Ù‹kˆØˆŒà�[‰[˜Oˆ[Õ,Ø×1Ñ1°)¸hÑ2FÐQYÐfpÐ1ÓqˆGØÐ'Ü (× ;Ñ ;À4Ô H‘ä $Ð%5°tÓ <�Ø×Ñ Ô(Ø×Ñ˜qÔ!Ø ÷ -×,Ò,ús   ÁA B2Â2B;c                 ó¼  — d}|j                   j                  d«      �rSt        j                  «       }dt	        t        j                  dd«      «      z   }t        j                  j                  ||«      }t        j                  |d¬«       t        j                  |«       t        j                  r;t        j                   |j                   d«      5 }|j#                  |«       d d d «       n!t        j$                  |j                   |¬	«       d }	t        j&                  |«      D ]>  }
|
j                  d
«      sŒt)        t        j                  j                  ||
«      d«      }	Œ@ |	€t+        d«      ‚|}	t-        |«      }t-        d«      }|	j/                  |«      }t1        ||«      }|d   }|d   }|d   }t3        |dz  «      }dj5                  |«      }g }t7        d|«      D ]§  }|	j9                  ||t-        d«      z  z   «       |	j/                  |«      }t1        d|«      }|d   j;                  d«      }|d   }|	j9                  |«       |	j/                  t-        |«      «      }t1        ||«      }||f|z   }|j=                  |«       Œ© |j                   j                  d«      r'|	j?                  «        t        j                  d¬«       |S # 1 sw Y   �ŒÎxY w)Nz<1hI1H3Lz.zipÚpytdx_r   i@B T)Úignore_errorsÚr)Úextract_dirz.datÚrbz no dat file found in zip archivez<6s1c1Lr5   r4   é   z<{}fr2   ) ÚnameÚendswithr%   Ú
gettempdirÚstrÚrandomÚrandintÚosÚpathÚjoinÚshutilÚrmtreeÚmakedirsÚsixÚPY2ÚzipfileÚZipFileÚ
extractallÚunpack_archiveÚlistdirr'   rN   r   r>   r   r9   rO   Úranger)   r?   ÚappendÚclose)r   r/   r   r   Úheader_pack_formatÚtmpdir_rootÚsubdir_nameÚtmpdirÚzfÚdatfileÚ_fileÚheader_sizeÚstock_item_sizeÚdata_headerÚstock_headerÚ	max_countÚreport_dateÚreport_sizeÚreport_fields_countÚreport_pack_formatÚresultsÚ	stock_idxÚsiÚ
stock_itemÚcodeÚfoaÚ	info_dataÚcw_infoÚ
one_records                                r   rD   zHistoryFinancialCrawler.parseb   sh  € à'Ðà×Ñ×&Ñ& vÕ.Ü"×-Ñ-Ó/ˆKØ"¤S¬¯©¸¸7Ó)CÓ%DÑDˆKÜ—W‘W—\‘\ +¨{Ó;ˆFÜ�M‰M˜&°Õ5Ü�K‰K˜ÔÜ�wŠwÜ—_‘_ ]×%7Ñ%7¸Ô=ÀØ—M‘M &Ô)÷ >Ð=ô ×%Ñ% m×&8Ñ&8ÀfÕMàˆGÜŸ™ FÖ+�Ø—>‘> &Õ)Ü"¤2§7¡7§<¡<°¸Ó#>ÀÓE‘Gð ,ð ˆÜÐ BÓCÐCà#ˆGÜÐ1Ó2ˆÜ" 9Ó-ˆØ—l‘l ;Ó/ˆÜÐ0°+Ó>ˆØ  ‘Oˆ	Ø" 1‘oˆØ" 1‘oˆÜ! +°¡/Ó2ÐØ#Ÿ]™]Ð+>Ó?ÐàˆÜ˜q )Ö,ˆIØ�L‰L˜ y´8¸IÓ3FÑ'FÑFÔGØ—‘˜oÓ.ˆBÜ 	¨2Ó.ˆJØ˜a‘=×'Ñ'¨Ó0ˆDØ˜Q‘-ˆCØ�L‰L˜ÔàŸ™¤XÐ.@Ó%AÓBˆIÜÐ/°Ó;ˆGØ Ð,¨wÑ6ˆJØ�N‰N˜:Õ&ð -ð ×Ñ×&Ñ& vÔ.Ø�M‰MŒOÜ�M‰M˜&°Õ5Øˆ÷S >Ñ=ús   ÃKËKc                 ó  — t        |«      dk(  ry t        |d   «      }ddg}|dz
  }t        d|«      D ]"  }|j                  dt        |dz   «      z   «       Œ$ t	        j
                  ||¬«      }|j                  dd¬	«       |S )
Nr   r‚   rz   r5   Úcolr4   )ÚdataÚcolumnsT)Úinplace)Úlenrk   rl   r[   ÚpdÚ	DataFrameÚ	set_index)r   r‰   Útotal_lenghrˆ   ÚlengthÚiÚdfs          r   Úto_dfzHistoryFinancialCrawler.to_df˜   s�   € Üˆt‹9˜Š>Øä˜$˜q™'“lˆØ�}Ð%ˆà˜q‘ˆÜ�q˜&Ö!ˆAØ�J‰J�uœs 1 q¡5›zÑ)Õ*ð "ô �l‰l ¨cÔ2ˆØ
�‰�V TˆÔ*Øˆ	r   rE   )rF   rG   rH   r   r   r0   rD   r”   r   r   r   rJ   rJ   ;   s   „ òò?ó!ò24ólr   rJ   Ú__main__)Údemo_reporthook)r*   )r‰   r6   zgpcw20190630.zip)Ústructr   r   Úpytdx.crawler.base_crawlerr   ra   r%   r\   r^   rd   Úpandasr�   re   rf   r   rJ   rF   r–   ÚcrawlerÚfetch_and_parseÚ	list_datarŽ   r“   Úprintr[   ÚcontainsÚanyr   r   r   Ú<module>r       s½   ð÷ $Ý 2Û Û Û Û 	Û 
Û à‡7‚7Ûðô" +ô "ôJk˜kô kð\ ˆzÒÛÝ:Ù)Ó+€Gà×'Ñ'°?Ð'ÓC€IØ	ˆ�‰˜9Ô	%€Bá	ˆ"ˆZ‰.ÔÙ	ˆ"ˆZ‰.×
Ñ
×
%Ñ
%Ð&8Ó
9×
=Ñ
=Ó
?Õ@ð r   