Ë
    Keyj�$  ã                   óþ  — 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ZddlZddlm	Z	 ddl
mZ ddlZ ej                  ej                  j                  «       ddddœd	d
ddœdœZed   d   aed   d   aed   d   ddddœadZdZe› d�ZdddddddœZdZ ej2                  dd «      Zd!d"iZ ej8                  «       Zej<                  j?                  e«       d#e_         d$„ Z!efd%„Z"d&„ Z#d'„ Z$d(„ Z%d)„ Z&e'd*k(  r e&«        yy)+u  
é•¿å…´åŽ¿äººæ°‘æ”¿åºœ - ä¿¡æ�¯å…¬å¼€å�Œæ �ç›®
URL: https://www.zjcx.gov.cn/col/col1229518369/index.html
JPAASä¿¡æ�¯å…¬å¼€ç³»ç»Ÿï¼ŒAPIç­›é€‰
  --col=huanping (é»˜è®¤): çŽ¯å¢ƒå½±å“�è¯„ä»· (xxgkId=II001-007-003, number=GG001)
  --col=gggs        : å…¬å‘Šå…¬ç¤º (xxgkId=N001)
é    N)ÚBeautifulSoup)Úurljoinu   é•¿å…´åŽ¿-çŽ¯å¢ƒå½±å“�è¯„ä»·u   çŽ¯å¢ƒå½±å“�è¯„ä»·zII001-007-003)ÚsiteÚcolumnÚxxgkIdu   é•¿å…´åŽ¿-å…¬å‘Šå…¬ç¤ºu   å…¬å‘Šå…¬ç¤ºÚN001)ÚhuanpingÚgggsr	   r   r   r   Úxxgk_combinationÚ330522000000Ú ©r   ÚxxgkTypeÚnodeIdÚ	classNameu   æµ™æ±Ÿzhttps://www.zjcx.gov.cnz7/api-gateway/jpaas-publish-server/front/page/build/unitÚbulidstaticÚ3645Ú
1229518369u   ç»„é…�åˆ†ç±»listÚQIrUapMnq9Avhahnnyp8M)Ú	parseTypeÚwebIdÚpageIdÚpageTypeÚtagIdÚtplSetIdé   Ú	SEARCH_DBz/root/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36Fc                 ó<   — t        | t        j                  d¬«       y )NT)ÚfileÚflush)ÚprintÚsysÚstderr)Úmsgs    ú"/root/gov_crawler/crawl_zjcx_hp.pyÚlogr&   4   s   € Ü	ˆ#”C—J‘J dÖ+ó    c                 óF  — i t         ¥}t        j                  t        d¬«      }t        j                  | ||dœd¬«      }||d<   t        j                  t        |d¬«      }|j                  «       }|d   d   }g }t        j                  d	|t        j                  «      D ]Æ  }	|	j                  d
«      }
t        j                  d|
«      }t        j                  d|
«      }t        j                  d|
«      }|sŒY|j                  d
«      }t        t        |«      }|r|j                  d
«      j                  «       nd}|r|j                  d
«      nd}|j                  |||dœ«       ŒÈ d}t        j                  d|«      D ]  }t!        |j                  d
«      «      }Œ ||fS )NF©Úensure_ascii)ÚpageNoÚpageSizeÚsearchÚ	paramJsoné<   )ÚparamsÚtimeoutÚdataÚhtmlz"<li[^>]*class="cf"[^>]*>(.*?)</li>é   zhref="([^"]+)"ztitle="([^"]*)"z$<span class="fr">(\d{4}-\d{2}-\d{2})r   )ÚurlÚtitleÚdater   zcount="(\d+)")Ú
API_PARAMSÚjsonÚdumpsÚSEARCHÚsessionÚgetÚAPI_URLÚreÚfinditerÚDOTALLÚgroupr-   r   ÚBASE_URLÚstripÚappendÚint)Úpage_noÚ	page_sizer0   Ú
search_strÚ
param_jsonÚrr2   r3   ÚitemsÚliÚli_htmlÚhref_mÚtitle_mÚdate_mÚhrefÚfull_urlr6   Údate_strÚtotalÚms                       r%   Ú
fetch_listrW   8   sk  € Ø”
ˆ^€FÜ—‘œF°Ô7€JÜ—‘ w¸IÐQ[Ñ\ÐkpÔq€JØ$€Fˆ;ÑÜ�‰”G F°BˆÓ7€AØ�6‰6‹8€DØ�‰<˜Ñ€Dà€EÜ�k‰kÐ?ÀÄrÇyÁyÓQò 
NˆØ—(‘(˜1“+ˆÜ—‘Ð,¨gÓ6ˆÜ—)‘)Ð.°Ó8ˆÜ—‘ÐBÀGÓLˆÚØ—<‘< “?ˆDÜœx¨Ó.ˆHÙ07�G—M‘M !Ó$×*Ñ*Ô,¸RˆEÙ*0�v—|‘| A”°bˆHØ�L‰L °EÀ8ÑLÕMð
Nð €EÜ�[‰[Ð)¨4Ó0ò  ˆÜ�A—G‘G˜A“J“‰ð à�%ˆ<Ðr'   c                 óf  — | j                  dd¬«      D ]s  }|d   }|j                  d«      s"|j                  d«      s|j                  d«      rt        t        |«      |d<   ŒO|j                  d«      rŒat        t        |«      |d<   Œu | j                  d	«      D ]P  }|j	                  d
«      xs d}|j                  d«      s|sŒ,|j                  d«      rŒ>t        t        |«      |d
<   ŒR | j                  ddg«      D ]  }|j                  «        Œ | j                  ddg«      D ]  }|j                  «        Œ | j                  g d¢«      D ]9  }|j                  d¬«      rŒ|j                  g d¢«      rŒ*|j                  «        Œ; | j                  d«      D ]$  }|j	                  d«      rŒ|j                  «        Œ& g }| j                  dd¬«      D ]B  }|d   }d|v s&t        j                  d|t        j                  «      sŒ2|j                  |«       ŒD dD ]  }	Œ t        | «      |fS )u_   ä»Ž div.zhengw æ��å�–å¹²å‡€ HTMLï¼šåŽ» script/style/Wordæ®‹ç•™ï¼Œé™„ä»¶ç»�å¯¹åŒ–ï¼Œè¡¨æ ¼ä¿�ç•™ÚaT)rR   rR   ú/z./z../ÚhttpÚimgÚsrcr   ÚscriptÚstyleÚspanÚfont)ÚpÚdivr`   ra   ©rD   )r\   ÚtablerY   zdocument/downloadz\.(docx?|xlsx?|pdf)$© )Úfind_allÚ
startswithr   rC   r=   Ú	decomposeÚunwrapÚget_textÚfindr?   r-   ÚIrE   Ústr)
ÚzwrY   Úhr\   r]   ÚsÚspÚtagÚattachmentsÚscript_removeds
             r%   Úclean_content_htmlrv   T   s  € ð �[‰[˜ 4ˆ[Ó(ò -ˆØˆf‰IˆØ�<‰<˜Ô §¡¨TÔ 2°a·l±lÀ5Ô6IÜ¤¨!Ó,ˆAˆfŠIØ—‘˜fÕ%Ü¤¨!Ó,ˆAˆfŠIð-ð �{‰{˜5Ó!ò 0ˆØ�g‰g�e‹nÒ" ˆØ�>‰>˜#Ô¢3¨s¯~©~¸fÕ/EÜ ¤¨3Ó/ˆC�ŠJð0ð
 �[‰[˜( GÐ,Ó-ò ˆØ	�‰�ðð �k‰k˜6 6Ð*Ó+ò ˆØ
�	‰	�ðð �{‰{Ò7Ó8ò ˆØ�|‰| $ˆ|Õ'°·±Ò9NÕ0OØ�M‰M�Oðð �[‰[˜Óò ˆØ�u‰u�V�}Ø�H‰H�Jðð €KØ�[‰[˜ 4ˆ[Ó(ò "ˆØˆf‰IˆØ !Ñ#¤r§y¡yÐ1HÈ!ÌRÏTÉTÕ'RØ×Ñ˜qÕ!ð"ð ò ˆØðäˆr‹7�KÐÐr'   c                 ó–  — 	 t         j                  | d¬«      }d|_        t        |j                  d«      }|}|j                  d«      }|r|j                  d¬«      }|r|}|r||k(  r;|j                  d	d
di¬«      }|r$|j                  d«      r|d   j                  «       }|}	|j                  d	d
di¬«      }|r|j                  d«      r|d   d d }	d}
g }|j                  dd¬«      }|rt        |«      \  }
}|
s|rdt        |«      › d�}
||
|	dj                  |«      d fS # t
        $ r}|d|g t        |«      fcY d }~S d }~ww xY w)Nr/   ©r1   zutf-8zhtml.parserr   Úh1Trd   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentÚPubDateé
   rc   Úzhengw)Úclass_u   [æœ¬å…¬å‘Šä¸ºé™„ä»¶æ ¼å¼�ï¼Œå…±u
   ä¸ªé™„ä»¶]ú,)r<   r=   Úencodingr   ÚtextÚ	Exceptionrn   rl   rk   rD   rv   ÚlenÚjoin)Ú
detail_urlÚ
list_titlerK   ÚsoupÚeÚ
full_titlery   ÚtÚmtrT   r~   rt   ro   s                r%   Úfetch_detailr�   {   sf  € ð6Ü�K‰K˜
¨BˆKÓ/ˆØˆŒ
Ü˜QŸV™V ]Ó3ˆð
 €JØ	�‰�4‹€BÙ	Ø�K‰K˜dˆKÓ#ˆÙØˆJÙ˜ zÒ1Ø�Y‰Y�v f¨nÐ%=ˆYÓ>ˆÙ�"—&‘&˜Ô#Ø˜I™×,Ñ,Ó.ˆJð €HØ	�‰�6 &¨)Ð!4ˆÓ	5€BÙ	ˆb�f‰f�YÔØ�i‘=  "Ð%ˆð €GØ€KØ	�‰�5 ˆÓ	*€BÙ	Ü1°"Ó5Ñˆ�á‘{Ø3´C¸Ó4DÐ3EÀZÐPˆà�w ¨#¯(©(°;Ó*?ÀÐEÐEøô? ò 6Ø˜2˜z¨2¬s°1«vÐ5Õ5ûð6ús   ‚4D% Ä%	EÄ.EÄ=EÅEc           
      óX  — 	 t        j                  t        d¬«      }| j                  d«      xs dd d }| j                  d«      xs dd d }| j                  d«      xs d}| j                  d	«      xs dd d
 }| j                  d«      xs dd d }t	        j
                  | j                  d«      xs g d¬«      }|j                  d|f«      j                  «       }|D ]  \  }	|j                  d|	f«       Œ |j                  d|||||||f«       |j                  d«      j                  «       d   }
|r|d d n|d d }|j                  d|
|||f«       |j                  «        |j                  «        t        d|d d › �«       y# t        $ r}t        d|› �«       Y d }~yd }~ww xY w)Né   rx   r6   r   iô  Úpage_urliè  r~   Úpublish_dateé   Ú	site_nameÚunknownéd   rt   Fr)   z,SELECT rowid FROM gov_raw WHERE page_url = ?z&DELETE FROM gov_search WHERE rowid = ?zšINSERT OR REPLACE INTO gov_raw (title, page_url, content, publish_date, site_name, source_url, status, attachments) VALUES (?, ?, ?, ?, ?, ?, 'synced', ?)zSELECT last_insert_rowid()r   zWINSERT OR REPLACE INTO gov_search(rowid, title, site_name, summary) VALUES (?, ?, ?, ?)u     âœ… Tz  [ERR] DB import failed: )Úsqlite3ÚconnectÚDB_PATHr=   r9   r:   ÚexecuteÚfetchallÚfetchoneÚcommitÚcloser&   r†   )ÚrecordÚdbr6   r“   r~   r”   r–   Úattachments_strÚoldÚridÚ	new_rowidÚsummaryrŒ   s                r%   Úimport_to_dbr¨   ¢   s±  € ðÜ�_‰_œW¨bÔ1ˆØ—‘˜GÓ$Ò*¨¨D¨SÐ1ˆØ—J‘J˜zÓ*Ò0¨b°%°4Ð8ˆØ—*‘*˜YÓ'Ò-¨2ˆØŸ
™
 >Ó2Ò8°b¸#¸2Ð>ˆØ—Z‘Z Ó,Ò9°	¸4¸CÐ@ˆ	ÜŸ*™* V§Z¡Z°Ó%>Ò%DÀ"ÐSXÔYˆà�j‰jÐGÈ(ÈÓU×^Ñ^Ó`ˆØò 	I‰FˆSØ�J‰JÐ?À#ÀÕHð	Ià
�
‰
ð iØ�H˜g |°YÀÈ/ÐZô	
ð —J‘JÐ;Ó<×EÑEÓGÈÑJˆ	Ù#*�'˜$˜3‘-°°d°s°ˆØ
�
‰
ÐlØ˜u i°Ð9ô	;à
�	‰	ŒØ
�‰Œ
Üˆf�U˜3˜B�Z�LÐ!Ô"ØøÜò ÜÐ(¨¨Ð,Ô-Üûðús   ‚FF Æ	F)ÆF$Æ$F)c                  ó4  — dd l } | j                  «       }|j                  dt        t        j                  «       «      dd¬«       |j                  dt        dd¬	«       |j                  d
t        dd¬	«       |j                  «       }t        |j                     }|d   a	|d   a
|d   ddddœat        d«      \  }}|j                  r|j                  }|st        d«       y t        |j                   |t"        z   dz
  t"        z  «      }t        |j                   t"        z  |«      }d}t%        «       }	t        dt        › dt        › d|› d|› �«       t'        d|dz   «      D �]  }
t        d|
› d�«       t        |
«      \  }}|st        d«        nót        dt)        |«      › d|› d�«       t+        |d«      D ]¿  \  }}|d   }||	v rŒ|	j-                  |«       t        d |› d!t)        |«      › d"|j/                  d!«      d#   d d$ › �«       t1        ||d%   «      \  }}}}}|||xs |d&   ||r|j/                  d'«      ng t        t        t2        d(œ}t5        |«      }|r|dz  }t7        j8                  d)«       ŒÁ ||k\  s�Œ  n t        d*t        › d+|› d,�«       y )-Nr   z--colr	   u6   æ �ç›®: huanping=çŽ¯å¢ƒå½±å“�è¯„ä»·, gggs=å…¬å‘Šå…¬ç¤º)ÚchoicesÚdefaultÚhelpz--pagesé   u1   çˆ¬å�–å‰�Né¡µï¼ˆæ¯�é¡µ15æ�¡ï¼Œé»˜è®¤5é¡µ=75æ�¡ï¼‰)Útyper«   r¬   z--totalu9   è¦†ç›–æ€»æ�¡æ•°ï¼ˆç”¨äºŽ --pages è®¡ç®—ï¼Œé»˜è®¤è‡ªåŠ¨ï¼‰r   r   r   r   r   r   r   r4   u   [ERROR] æ— æ³•èŽ·å�–æ€»æ�¡æ•°u   ðŸ“‹ u    æ �ç›®=u    æ€»æ•°=u    æœ¬æ¬¡è®¡åˆ’=u   ðŸ“„ åˆ—è¡¨[page=ú]u     â†’ æ— æ›´å¤šæ•°æ�®u     â†’ u    æ�¡ (æ€»è®¡ú)r5   z  (rZ   z) éÿÿÿÿé(   r6   r7   rƒ   )r6   r“   r”   r~   rt   r–   r   Úprovinceg      à?u   
âœ… u    çˆ¬å�–å®Œæˆ�ï¼Œå…±å…¥åº“ u    æ�¡)ÚargparseÚArgumentParserÚadd_argumentÚlistÚCOLUMNSÚkeysrF   Ú
parse_argsÚcolÚSITEÚCOLUMNr;   rW   rU   r&   ÚminÚpagesÚ	PAGE_SIZEÚsetÚranger‡   Ú	enumerateÚaddÚsplitr�   ÚPROVINCEr¨   ÚtimeÚsleep)r´   ÚparserÚargsr»   Úfirst_itemsrU   Útotal_pagesÚtotal_neededÚcountÚseenÚpagerL   Ú	total_nowÚidxÚitemr5   r�   r~   Údetail_dater£   Úerrr¡   Úoks                          r%   Úmainr×   À   sÀ  € ÛØ×$Ñ$Ó&€FØ
×Ñ˜¬¬g¯l©l«nÓ)=ÀzØUð ô Wà
×Ñ˜	¬°QØPð ô Rà
×Ñ˜	¬°QØXð ô Zà×ÑÓ€Dô �$—(‘(Ñ
€CØˆv‰;€DØ�‰]€FØ˜H™Ð3EÐQ_ÐnpÑq€Fô $ A›Ñ€K�Ø‡z‚zØ—
‘
ˆÙÜÐ+Ô,ØÜ�d—j‘j 5¬9Ñ#4°qÑ#8¼YÑ"FÓG€KÜ�t—z‘z¤IÑ-¨uÓ5€LØ€EÜ‹5€Däˆ%”ˆv�Xœf˜X X¨e¨W°NÀ<À.ÐQÔRä�a˜ q™Ó)ó  ˆÜÐ ˜v QÐ'Ô(Ü% dÓ+ÑˆˆyÙÜÐ'Ô)ÙÜˆf”S˜“Z�L ¨Y¨K°qÐ9Ô:ä" 5¨!Ó,ò 	‰IˆC�Ø�u‘+ˆCØ�d‰{ØØ�H‰H�SŒMÜ�#�c�U˜!œC ›J˜< r¨#¯)©)°C«.¸Ñ*<¸S¸bÐ*AÐ)BÐCÔDÜEQÐRUÐW[Ð\cÑWdÓEeÑBˆJ˜ ¨o¸sð $ØØ +Ò ;¨t°F©|Ø"Ù=L˜×4Ñ4°SÔ9ÐRTÜ!Ü Ü$ñ	ˆFô ˜fÓ%ˆBÙØ˜‘
�Ü�J‰J�s�Oð+	ð. �LÔ ÙðA ôD ˆ&”�Ð0°°°tÐ<Õ=r'   Ú__main__)(Ú__doc__r"   Úosr?   r9   rÇ   r™   ÚrequestsÚbs4r   Úurllib.parser   Úurllib3Údisable_warningsÚ
exceptionsÚInsecureRequestWarningr¸   r¼   r½   r;   rÆ   rC   r>   r8   rÀ   Úgetenvr›   ÚHEADERSÚSessionr<   ÚheadersÚupdateÚverifyr&   rW   rv   r�   r¨   r×   Ú__name__rf   r'   r%   ú<module>ré      sY  ðñ÷ (× '× 'Û Ý Ý  Û Ø €× Ñ ˜×+Ñ+×BÑBÔ Cð /Ø&Ø!ñð )Ø Øññ€ð ˆzÑ˜6Ñ"€Ø	�Ñ	˜XÑ	&€Ø˜JÑ'¨Ñ1Ð?QÐ]kÐz|Ñ	}€Ø€Ø$€ØˆJÐMÐ
N€àØØØØØ'ñ€
ð €	à
ˆ"�)‰)�KÐ!2Ó
3€ØÐWÐ
X€Ø
ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ Ø€„ò,ð #,ó ò8$ òN$FòNò<A>ðH ˆzÒÙ…Fð r'   