Ë
    &ˆj0'  ã            
       óB  — 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Z
dZde
› �Ze› d�Ze› d�Zd	Zd
ZdZdZdZd„ Zd„ Zd„ Zd„ Zdd„Zddedededefd„Zedk(  r< e«       \  ZZZ Z! ede› de!› de› de › �«        ejD                   eeee e!«      «       yy)uy  Crawler for æ¸…æ°´æ²³åŽ¿äººæ°‘æ”¿åºœ - é€šçŸ¥å…¬å‘Š (qingshuihe.gov.cn zwgk tzgg)
   ç‘žæ•°4ä»£ WAF: playwright æ¸²æŸ“ (page.content() æ‹¿æ¸²æŸ“å�Ž DOM)
   åˆ—è¡¨: zwgk/tzgg/index.html ~ index_7.html (15æ�¡/é¡µ, 8é¡µ ~120æ�¡)
   è¯¦æƒ…: /zwgk/tzgg/YYYYMM/t*.html, div#Zoom æ­£æ–‡, <title> æ ‡é¢˜, å�‘å¸ƒæ—¥æœŸ
   å�‚è€ƒ: crawl_qingshuihe_bmwj.py (å�Œç«™ç‘žæ•°4ä»£æ”»ç ´æ¨¡æ�¿)
é    N)Úasync_playwrightzwww.qingshuihe.gov.cnz139.9.247.160zhttp://z
/zwgk/tzggú/z/root/search.dbu%   æ¸…æ°´æ²³åŽ¿äººæ°‘æ”¿åºœ-é€šçŸ¥å…¬å‘Šzcrawl_qingshuihe_tzgg.pyzuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36z
2023-08-18c                 ó2   — t        dt        › d| › �d¬«       y )Nú[z] T)Úflush)ÚprintÚ	SITE_NAME)Úmsgs    ú*/root/gov_crawler/crawl_qingshuihe_tzgg.pyÚlogr      s   € Ü	ˆAŒiˆ[˜˜3˜%Ð
 ¨Ö-ó    c                  ó  — d} d}d }d}t        t        j                  «      D �]Z  \  }}|dk(  r?|dz   t        t        j                  «      k  r t	        t        j                  |dz      «      } ŒK|dk(  rd}ŒS|dk(  r6|dz   t        t        j                  «      k  rt        j                  |dz      }ŒŽ|dk(  r?|dz   t        t        j                  «      k  r t	        t        j                  |dz      «      }ŒÒ|j                  d«      r|j                  d	d«      d   }Œù|j                  d
«      r t	        |j                  d	d«      d   «      } �Œ*|j                  d«      s�Œ=t	        |j                  d	d«      d   «      }�Œ] | |||fS )Né   Té   z--pagesz--incrementalz--outputz--startz	--output=ú=z--pages=z--start=)Ú	enumerateÚsysÚargvÚlenÚintÚ
startswithÚsplit)ÚpagesÚincrementalÚoutputÚstartÚiÚas         r   Ú
parse_argsr      sE  € Ø€EØ€KØ€FØ€EÜœ#Ÿ(™(Ó#ó ,‰ˆˆ1Ø�	Š>˜a !™e¤c¬#¯(©(£mÒ3ÜœŸ™  Q¡™Ó(‰EØ�/Ò!Ø‰KØ�*Š_  Q¡¬¬S¯X©X«Ò!6Ü—X‘X˜a !™e‘_‰FØ�)Š^  A¡¬¬C¯H©H«Ò 5ÜœŸ™  Q¡™Ó(‰EØ�\‰\˜+Ô&Ø—W‘W˜S !“_ QÑ'‰FØ�\‰\˜*Ô%Ü˜Ÿ™  Q›¨Ñ*Ó+ŠEØ�\‰\˜*Ö%Ü˜Ÿ™  Q›¨Ñ*Ó+ŠEð,ð �+˜v uÐ,Ð,r   c                 óÄ   — g }t        «       }t        j                  d| «      D ]:  }|j                  d«      }||vsŒ|j	                  |«       |j                  |«       Œ< |S )uA   ä»Žåˆ—è¡¨é¡µæ��å�– (url, æ ‡é¢˜)ã€‚å�ªåŒ¹é…� tzgg è¯¦æƒ…é¡µé“¾æŽ¥zT<a[^>]*href="(http://www\.qingshuihe\.gov\.cn/zwgk/tzgg/\d{6}/t\d+_\d+\.html)"[^>]*>r   )ÚsetÚreÚfinditerÚgroupÚaddÚappend)ÚhtmlÚitemsÚseenÚmÚurls        r   Úextract_list_itemsr,   2   s\   € à€EÜ‹5€DÜ�[‰[ÐpÐrvÓwò ˆØ�g‰g�a‹jˆØ�dŠ?Ø�H‰H�SŒMØ�L‰L˜Õð	ð
 €Lr   c                 ó˜  ‡
— dddg ddœ}t        j                  d| t         j                  «      }|r`t        j                  dd|j	                  d«      «      j                  «       }t        j                  dd|«      j                  «       }|r||d<   t        j                  d	| «      D �]  }|j	                  d«      |j	                  d
«      j                  «       c}Š
t        ˆ
fd„dD «       «      s8t        j                  d|t         j                  «      sd|j                  «       v sŒ�|j                  d«      r|n%|j                  d«      r	t        |z   nt        dz   |z   }|j                  dd«      }‰
|f|d   D �cg c]  }|d   |d   f‘Œ c}vsŒì|d   j                  ‰
|dœ«       �Œ dD ]¿  }t        j                  || t         j                  «      }|sŒ+|j	                  d«      }	t        t        j                  d|	«      «      |d<   t        j                  dd|	t         j                  ¬«      }	t        j                  dd|	t         j                  ¬«      }	|	j                  «       |d<    n t        j                  d| «      }|st        j                  d| «      }|r$|j	                  d«      j                  dd «      |d!<   |S c c}w )"u:   æ��å�–è¯¦æƒ…: title, content, date, attachments, has_tableÚ F)ÚtitleÚcontentÚdateÚattachmentsÚ	has_tablez<title>(.*?)</title>u%   [\s_]*æ¸…æ°´æ²³åŽ¿äººæ°‘æ”¿åºœ[\s_]*$r   z_*\s*$r/   z+<a[^>]*href="([^"]+)"[^>]*>([^<]{2,80})</a>é   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0ÚkÚtxts     €r   ú	<genexpr>z!extract_detail.<locals>.<genexpr>K   s   øè ø€ Ò@˜Aˆq�CŒxÑ@ùs   ƒ)u   é™„ä»¶u   ä¸‹è½½u   æ–‡ä»¶z#\.(docx?|xlsx?|pdf|zip|rar|wps|et)$ÚdownloadÚhttpr   z&amp;ú&r2   Únamer+   )r>   r+   )z#<div[^>]*id="Zoom"[^>]*>(.*?)</div>z1<div[^>]*class="trs_editor_view"[^>]*>(.*?)</div>z,<div[^>]*class="TRS_Editor"[^>]*>(.*?)</div>z<tabler3   z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>r0   uA   å�‘å¸ƒ[æ—¥æ—¥æœŸæœŸ]*[ï¼š:]\s*([\d]{4}[-/][\d]{1,2}[-/][\d]{1,2})z([\d]{4}-[\d]{2}-[\d]{2})ú-r1   )r"   ÚsearchÚDOTALLÚsubr$   Ústripr#   ÚanyÚIÚlowerr   ÚBASEÚreplacer&   Úbool)r'   Úresultr*   ÚtÚamÚhrefÚfullr   ÚpatternÚinnerr9   s             @r   Úextract_detailrR   >   s†  ø€ à b°"ÀRÐV[Ñ\€Fä
�	‰	Ð)¨4´·±Ó;€AÙÜ�F‰FÐ;¸RÀÇÁÈÃÓL×RÑRÓTˆÜ�F‰F�9˜b !Ó$×*Ñ*Ó,ˆÙØˆF�7‰Oä�k‰kÐHÈ$ÓOó IˆØ—H‘H˜Q“K §¡¨!£×!2Ñ!2Ó!4ˆ	ˆˆcÜÓ@Ð!?Ô@Ô@ÄBÇIÁIÐNtÐvzÔ|~÷  }Añ  }Aô  EBð  FPð  TX÷  T^ñ  T^ó  T`ò  F`ØŸ?™?¨6Ô2‘4ÈÏÉÐX[ÔH\¼ÀºÔbfÐilÑblÐosÑbsˆDØ—<‘< ¨Ó-ˆDØ�Tˆ{À&ÈÑBWÖ"X¸Q A f¡I¨q°©xÒ#8Ò"XÒXØ�}Ñ%×,Ñ,°cÀ$Ñ-GÖHðIðEò 
ˆô �I‰I�g˜t¤R§Y¡YÓ/ˆÚØ—G‘G˜A“JˆEÜ"&¤r§y¡y°¸EÓ'BÓ"CˆF�;ÑÜ—F‘FÐ7¸¸UÌ"Ï)É)ÔTˆEÜ—F‘FÐ5°r¸5ÌÏ	É	ÔRˆEØ %§¡£ˆF�9ÑÙð
ô 	�	‰	ÐVÐX\Ó]€AÙÜ�I‰IÐ2°DÓ9ˆÙØŸ™ ›×+Ñ+¨C°Ó5ˆˆv‰Ø€Mùò) #Ys   Å=Kc           
   ƒ   ó‚  K  — t        |«      D ]¾  }	 | j                  |dd¬«      ƒ d {  –—†  | j                  |«      ƒ d {  –—†  | j                  «       ƒ d {  –—† }t        |«      dkD  r|c S | j                  d
«      ƒ d {  –—†  | j                  «       ƒ d {  –—† }t        |«      dkD  r|c S | j                  d
«      ƒ d {  –—†  ŒÀ y7 Œ¦# t        $ rW}t        d|j	                  d«      d   d d › dt        |«      d d	 › �«       | j                  d
«      ƒ d {  –—†7   Y d }~�Œd }~ww xY w7 Œò7 ŒÜ7 Œ³7 Œ�7 Œt­w)NÚdomcontentloadedi¸ˆ  ©Ú
wait_untilÚtimeoutz
nav error r   éÿÿÿÿé(   ú: é<   i¸  é N  r.   )	ÚrangeÚgotoÚ	Exceptionr   r   ÚstrÚwait_for_timeoutr0   r   )Úpager+   Úwait_msÚ	max_retryÚattemptÚer'   s          r   Únavrg   e   s3  è ø€ Ü˜Ó#ò *ˆð	Ø—)‘)˜CÐ,>È�)ÓN×NÐNð
 ×#Ñ# GÓ,×,Ð,Ø—\‘\“^×#ˆÜˆt‹9�uÒØŠKØ×#Ñ# DÓ)×)Ð)Ø—\‘\“^×#ˆÜˆt‹9�uÒØŠKØ×#Ñ# DÓ)×)Ñ)ð*ð  ð OùÜò 	Ü�*˜SŸY™Y s›^¨BÑ/°°Ð4Ð5°R¼¸A»¸sÀ¸°}ÐEÔFØ×'Ñ'¨Ó-×-Ñ-Ýûð	úð 	-øØ#øð 	*øØ#øð 	*úsž   ‚D?’C©CªC®D?ÁD5ÁD?ÁD7Á*D?ÂD9ÂD?ÂD;Â*D?ÃD=Ã	D?ÃCÃ	D2ÃAD-Ä!D$Ä"D-Ä'D?Ä-D2Ä2D?Ä7D?Ä9D?Ä;D?Ä=D?r   r   r   r   c              ƒ   óZ
  K  — d }|s+t        j                  t        d¬«      }|j                  «       }d }|rt	        |dd¬«      }d}d}d}	t        j
                  «       }
t        «       4 ƒd {  –—† }|j                  j                  ddd	t        › d
t        › �g¬«      ƒ d {  –—† }|j                  t        dddœd¬«      ƒ d {  –—† }|j                  «       ƒ d {  –—† }d}t        d«      D ]‡  }|j                  t         dd¬«      ƒ d {  –—†  |j#                  d«      ƒ d {  –—†  |j%                  «       ƒ d {  –—† }t'        |«      dkD  rt)        d|dz   › d�«        nt)        d|dz   › d�«       Œ‰ t'        |«      dk  rt)        d«       	 d d d «      ƒd {  –—†  y t        ||| z   «      D �]Ã  }|dk(  r
t*        › d�}nt*        › d|dz
  › d �}t-        ||«      ƒ d {  –—† }|st)        d!|› d"�«       |	dz  }	ŒMt/        |«      }|st)        d!|› d#�«        �n[t)        d!|› d$t'        |«      › d%�«       |D �]7  }|r)j1                  d&|f«       |j3                  «       r|dz  }Œ/t-        ||«      ƒ d {  –—† }|s&t)        d'|j5                  d(«      d)   › �«       |	dz  }	Œkt7        |«      }|d*   s&t)        d+|j5                  d(«      d)   › �«       |	dz  }	Œ¡|d,   sd-|› d.|d*   › d/�|d,<   |d,   }t8        |||d*   |d0   xs d1|d,   d d2 j;                  d3d«      j;                  d4d«      d5d6|d|d7   d8|d9   rdndt<        d:œ}|r?|j?                  tA        jB                  |d;¬<«      d=z   «       |jE                  «        |dz  }n«j1                  d>t8        |||d*   |d0   xs d1|d0   xs d1|d,   d d2 j;                  d3d«      j;                  d4d«      d5d6d|ddtA        jB                  |d7   d;¬<«      d8|d9   rdndt<        f«       |jF                  dkD  r|dz  }n|dz  }|jI                  «        |d?z  dk(  s�Œ|dkD  s�Œ
t)        d@|› dA|› dB|	› dCt        j
                  «       |
z
  dD›dE�	«       �Œ: �ŒÆ |jK                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  |r|jK                  «        |r|jK                  «        t)        dF|› dA|› dB|	› dGt        j
                  «       |
z
  dD›dH�	«       y 7 �Œˆ7 �ŒV7 �Œ67 �Œ!7 �Œô7 �ŒÞ7 �ŒÉ7 �Œl7 �Œ)7 �Œ–7 Œ…7 Œw# 1 ƒd {  –—†7  sw Y   Œ‡xY w­w)INé   )rW   Úwzutf-8)Úencodingr   Tz---disable-blink-features=AutomationControlledz--host-resolver-rules=MAP ú )ÚheadlessÚargsiV  i„  )ÚwidthÚheightzzh-CN)Ú
user_agentÚviewportÚlocaler.   é   rT   iÈ¯  rU   ip  r\   u   ç‘žæ•°é€šè¿‡ (attempt r   ú)u   ç‘žæ•°æŒ‘æˆ˜é‡�è¯• z/6...u   ä¸»é¡µé�¢æŒ‘æˆ˜å¤±è´¥ï¼Œé€€å‡ºz/index.htmlz/index_z.htmlu   é¡µu    æŒ‘æˆ˜å¤±è´¥ï¼Œè·³è¿‡u(    æ— æ�¡ç›®ï¼ˆå�¯èƒ½åˆ°å°¾é¡µï¼‰ï¼Œå�œæ­¢rZ   u    æ�¡z'SELECT id FROM gov_raw WHERE page_url=?u     è¯¦æƒ…å¤±è´¥: r   rX   r/   u     æ— æ ‡é¢˜: r0   z<p><a href="z">z</a></p>r1   z
1900-01-01éÈ   ú<ú>Ú	publishedu   é€šçŸ¥å…¬å‘Šr2   u	   å†…è’™å�¤r3   )Ú	site_nameÚ
source_urlÚpage_urlr/   Úpublish_dateÚsummaryÚstatusÚcategoryr0   Útagsr2   Ú
group_namer3   Úscript_nameF)Úensure_asciiú
an  
                        INSERT OR IGNORE INTO gov_raw
                        (site_name, source_url, page_url, title, publish_date, date_rank, summary, status,
                         category, visits, content, tags, industry, attachments, group_name, has_table, script_name)
                        VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
                    é
   u     è¿›åº¦: æ–°å¢žu    è·³è¿‡u    å¤±è´¥z (z.0fzs)u   å®Œæˆ�: æ–°å¢žu    ç”¨æ—¶Ús)&Úsqlite3ÚconnectÚDBÚcursorÚopenÚtimer   ÚchromiumÚlaunchÚHOSTÚIPÚnew_contextÚUAÚnew_pager]   r^   ÚMAIN_URLra   r0   r   r   Ú	LIST_BASErg   r,   ÚexecuteÚfetchoner   rR   r	   rI   ÚSCRIPT_NAMEÚwriteÚjsonÚdumpsr   ÚrowcountÚcommitÚclose)r   r   r   r   ÚconnÚcurÚout_fÚ	new_countÚ
skip_countÚ
fail_countÚt0ÚpÚbrowserÚctxrb   Ú	main_htmlre   ÚpgÚlist_urlr'   Úurlsr+   ÚdhtmlÚdetÚcontent_htmlÚrecs                             r   Úcrawlr²   y   s¡  è ø€ Ø€DÙÜ�‰œr¨2Ô.ˆØ�k‰k‹mˆØ€EÙÜ�V˜S¨7Ô3ˆØ€IØ€JØ€JÜ	�‰‹€BäÓ!÷ \ð \ QØŸ
™
×)Ñ)ØØAØ.¬t¨f°A´b°TÐ:ð<ð *ó 
÷ 
ˆð
 ×'Ñ'´2È$ÐZ]Ñ@^ÐgnÐ'Óo×oˆØ—\‘\“^×#ˆð ˆ	Ü˜Q“xò 	8ˆGØ—)‘)œHÐ1CÈU�)ÓS×SÐSØ×'Ñ'¨Ó-×-Ð-Ø"Ÿl™l›n×,ˆIÜ�9‹~ Ò%ÜÐ,¨W°Q©Y¨K°qÐ9Ô:ÙÜÐ% g¨a¡i [°Ð6Õ7ð	8ô ˆy‹>˜UÒ"ÜÐ0Ô1Ø÷+\÷ \ð \ô0 ˜˜u u™}Ó-ó B	vˆBØ�QŠwÜ'˜[¨Ð4‘ä'˜[¨°°1±¨v°UÐ;�Ü˜T 8Ó,×,ˆDÙÜ�c˜"˜Ð3Ð4Ô5Ø˜a‘�
ØÜ% dÓ+ˆDÙÜ�c˜"˜ÐEÐFÔGÚÜ�#�b�T˜œC ›I˜; dÐ+Ô,Øó 3v�ÙØ—K‘KÐ IÈCÈ6ÔRØ—|‘|”~Ø" a™˜
Ø Ü! $¨›n×,�ÙÜÐ*¨3¯9©9°S«>¸"Ñ+=Ð*>Ð?Ô@Ø !‘O�JØÜ$ UÓ+�Ø˜7’|Ü˜-¨¯	©	°#«°rÑ(:Ð';Ð<Ô=Ø !‘O�JØØ˜9’~Ø'3°C°5¸¸3¸w¹<¸.ÈÐ%Q�C˜	‘NØ" 9™~�ä!*¸(ÐPSØ  ™\¸3¸v¹;Ò;VÈ,Ø" 9™~¨d¨sÐ3×;Ñ;¸CÀÓD×LÑLÈSÐRTÓUØ)°~ÐR^Ø¨s°=Ñ/AØ"-ÀÀ[ÒAQ¹AÐWXÜ#.ñ�ñ Ø—K‘K¤§
¡
¨3¸UÔ CÀdÑ JÔKØ—K‘K”MØ ‘N‘Ià—K‘Kð !ô " 8¨S°#°g±,ÀÀFÁÒ@[È|Ø˜F™Ò3 |°S¸±^ÀDÀSÐ5I×5QÑ5QÐRUÐWYÓ5Z×5bÑ5bÐcfÐhjÓ5kØ# ^°Q¸Ø˜B¤§
¡
¨3¨}Ñ+=ÈEÔ RØ#¨#¨kÒ*:¡QÀÄ;ðôð —|‘| aÒ'Ø! Q™™	à" a™˜
Ø—K‘K”MØ˜r‘> QÔ&¨9°q¬=ÜÐ*¨9¨+°W¸Z¸LÈÐPZÈ|Ð[]Ô^b×^gÑ^gÓ^iÐjlÑ^lÐmpÐ]qÐqsÐtÖuòg3vðB	vðH �m‰m‹o×Ð÷y\÷ \ñ| Ø�
‰
ŒÙØ�‰ŒÜˆ.˜˜ 7¨:¨,°g¸j¸\ÈÔQU×QZÑQZÓQ\Ð]_ÑQ_Ð`cÐPdÐdeÐfÕgðE\ùð
ùð
 pùØ#ùð
 TùØ-ùØ,ùð\ùð: -ùð  -ùð^ 	øðy\ø÷ \÷ \ñ \üs  ‚A*T+Á,S4Á-T+Á01TÂ!S7Â""TÃS:ÃTÃS=Ã/TÄT ÄTÄ%TÄ&TÄ=TÄ>ATÆT+ÆT	ÆT+Æ#A TÇ#TÇ$BTÉ9T
É:GTÐ>TÑATÒTÒTÒT+ÒTÒAT+Ó7TÓ:TÓ=TÔ TÔTÔTÔ	T+ÔTÔTÔTÔT+ÔT(ÔTÔT(Ô$T+Ú__main__zpages=z start=z incremental=z output=)i   r   )Nr   )#Ú__doc__Úasyncior"   r   rˆ   r›   Úosr�   Úplaywright.async_apir   r�   r‘   rH   r–   r•   rŠ   r	   r™   r“   ÚCUTOFFr   r   r,   rR   rg   r   rJ   r`   r²   Ú__name__r   r   r   r   Úrunr6   r   r   ú<module>r»      s   ðñ÷ 1× 0× 0Ó 0Ý 1à€Ø€Ø	��Ð€Øˆf�JÐ€	ØˆV�1ˆ:€Ø€Ø3€	Ø(€Ø|€Ø	€ò.ò-ò.	ò$óNñ(oh�sð oh¨ð oh°sð ohÈ#ó ohðd ˆzÒÙ(2«Ñ%€Eˆ;˜ Ùˆ&���w˜u˜g ]°;°-¸xÈÀxÐPÔQØ€G‡K�K‘�e˜[¨&°%Ó8Õ9ð r   