Ë
    ­�jy  ã                   ó¢   — 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 ddlm	Z	 dZ
dZdZdZd	Zd
ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u[  
å”�å±±å¸‚äººæ°‘æ”¿åºœ - å¾�è¯¢è°ƒæŸ¥æ �ç›®çˆ¬è™«
URL: https://www.tangshan.gov.cn/zhuzhan/zxdc/index.html
WAF: ç‘žæ•° JS æŒ‘æˆ˜ (412) -> Playwright è¿‡æŒ‘æˆ˜
åˆ—è¡¨: /zhuzhan/zxdc/index_{N}.html (257æ�¡/26é¡µ)
è¯¦æƒ…: /zhuzhan/zxdc/20260720/1651636.html
  æ­£æ–‡: div.main_div_text | æ ‡é¢˜/æ—¥æœŸ/æ�¥æº�: meta ArticleTitle/PubDate/ContentSource
é    N)ÚBeautifulSoup)Úsync_playwrightu   å”�å±±å¸‚-å¾�è¯¢è°ƒæŸ¥zhttps://www.tangshan.gov.cnz3https://www.tangshan.gov.cn/zhuzhan/zxdc/index.htmlé   z
2023-08-16z/root/search.dbzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36c                 óÔ   — | j                  dd«      j                  dd«      j                  dd«      j                  dd«      } t        j                  dd| «      j                  «       } | S )Nz&middot;Ú ú&nbsp;ú u   â€‹u   ï»¿z\s+)ÚreplaceÚreÚsubÚstrip©Úts    ú(/root/gov_crawler/crawl_tangshan_zxdc.pyÚclean_titler      s[   € Ø	�	‰	�*˜bÓ!×)Ñ)¨(°CÓ8×@Ñ@ÀÈ2ÓN×VÑVÐW_ÐacÓd€AÜ
�‰ˆv�s˜AÓ×$Ñ$Ó&€AØ€Hó    c                 ó¸  — t        | d«      }|j                  ddg«      D ]  }|j                  «        Œ |j                  d„ «      D ]  }|j                  «        Œ |j                  ddg«      D ]  }|j                  «        Œ 	 |j                  d«      D �cg c]  }|j	                  d«      sŒ|‘Œ }}|s	 t        |«      S |d   j                  «        ŒRc c}w )	Núhtml.parserÚscriptÚstylec                 ó:   — | j                   xr d| j                   v S )Nú:)Únamer   s    r   ú<lambda>zclean_content.<locals>.<lambda>%   s   €  q§v¡vÒ'?°#¸¿¹°-€ r   ÚspanÚfontÚpr   )r   Úfind_allÚ	decomposeÚunwrapÚfindÚstr)Ú	html_fragÚsoupÚtagr   Únesteds        r   Úclean_contentr'   !   sÑ   € Ü˜ MÓ2€DØ�}‰}˜h¨Ð0Ó1ò ˆØ�‰�ðà�}‰}Ñ?Ó@ò ˆØ�‰�ðà�}‰}˜f fÐ-Ó.ò ˆØ�
‰
�ðð Ø!Ÿ]™]¨3Ó/Ö?˜°1·6±6¸#µ;’!Ð?ˆÐ?ÙØäˆt‹9Ðð 	ˆq‰	×ÑÔð	 ùÚ?s   ÂCÂ/Cc                 óH  — |dk(  rt         nt        › d|› d�}| j                  d|«      }t        j                  d|«      }g }|D ][  \  }}|j                  dd«      j                  «       }|sŒ)t        j                  d|«      rŒ@|j                  t        |«      |f«       Œ] |S )	Né   z/zhuzhan/zxdc/index_z.htmlúUasync (u) => {
        const r = await fetch(u);
        return await r.text();
    }z:href="(/zhuzhan/zxdc/\d+/\d+\.html)"[^>]*>([^<]{4,60})</a>r   r	   u$   ^(é¦–é¡µ|ä¸Šä¸€é¡µ|ä¸‹ä¸€é¡µ|å°¾é¡µ))
ÚLIST_URLÚBASEÚevaluater   Úfindallr
   r   ÚmatchÚappendr   )ÚpageÚpnÚurlÚhtmlÚitemsÚoutÚhr   s           r   Ú
fetch_listr8   2   s§   € Ø˜A’g�(¤d VÐ+?À¸tÀ5Ð#I€CØ�=‰=ð 	ð ó€Dô �J‰JÐTÐVZÓ[€EØ
€CØò ,‰ˆˆ1Ø�I‰I�h Ó$×*Ñ*Ó,ˆÚ”R—X‘XÐEÀqÕIØ�J‰Jœ A›¨Ð*Õ+ð,ð €Jr   c                 ó8  — t         |z   }| j                  d|«      }t        |d«      }d}|j                  dddi¬«      }|r|j	                  d«      rt        |d   «      }|sA|j                  r5t        |j                  j                  «       j                  d	«      d
   «      }d}|j                  dddi¬«      }|r?|j	                  d«      r.t        j                  d|d   «      }|r|j                  d
«      nd}d}	|j                  dddi¬«      }|r$|j	                  d«      r|d   j                  «       }	|j                  dt        j                  d«      ¬«      }
|
sy g }|
j                  dd¬«      D ]†  }|d   }t        j                  d|t        j                  «      sŒ.|j!                  d«      s	t         |z   }|j#                  |j                  d¬«      xs |j                  d«      d   |dœ«       ||d<   Œˆ t%        t'        |
«      «      }|||	|||dœS )Nr*   r   r   Úmetar   ÚArticleTitle)ÚattrsÚcontentú-r   ÚPubDatez\d{4}-\d{2}-\d{2}ÚContentSourceÚdivÚmain_div_text)Úclass_ÚaT)ÚhrefrE   z%\.(pdf|docx?|xlsx?|zip|rar|wps)(\?|$)Úhttp)r   ú/éÿÿÿÿ©r   r3   )ÚtitleÚdateÚsourceÚcontent_htmlÚattachmentsr3   )r,   r-   r   r!   Úgetr   rJ   Úget_textÚsplitr   ÚsearchÚgroupr   Úcompiler   ÚIÚ
startswithr0   r'   r"   )r1   rE   r3   r4   r$   rJ   ÚmrK   ÚdmrL   Úcontent_divrN   rD   r7   rM   s                  r   Úfetch_detailrZ   @   s   € Ü
�‰+€CØ�=‰=ð 	ð ó€Dô ˜˜}Ó-€DØ€EØ�	‰	�& ¨Ð 8ˆ	Ó9€AÙˆQ�U‰U�9ÔÜ˜A˜i™LÓ)ˆÙ�T—Z’ZÜ˜DŸJ™J×/Ñ/Ó1×7Ñ7¸Ó<¸QÑ?Ó@ˆØ€DØ�	‰	�& ¨Ð 3ˆ	Ó4€AÙˆQ�U‰U�9ÔÜ�Y‰YÐ+¨Q¨y©\Ó:ˆÙ ˆr�x‰x˜Œ{ bˆØ€FØ�	‰	�& ¨Ð 9ˆ	Ó:€AÙˆQ�U‰U�9ÔØ�9‘×#Ñ#Ó%ˆà—)‘)˜E¬"¯*©*°_Ó*E�)ÓF€KÙØØ€KØ×!Ñ! #¨DÐ!Ó1ò ˆØˆf‰IˆÜ�9‰9Ð=¸qÄ"Ç$Á$ÕGØ—<‘< Ô'Ü˜1‘H�Ø×Ñ¨¯
©
¸¨
Ó(>Ò(RÀ!Ç'Á'È#Ã,ÈrÑBRÐ[\Ñ]Ô^ØˆAˆfŠIðô !¤ [Ó!1Ó2€LØ D°FÈLØ&¨sñ4ð 4r   c                 ó^  — t        j                  t        d¬«      }|j                  d«       dx}}|j	                  «       }| D ]Ÿ  }|s|dz  }Œt        j                  |d   D �cg c]  }|d   |d   d	œ‘Œ c}d
¬«      }	 |j                  dt        |d   |d   |d   |d   |d   |d   xs dd d dd|f
«       |j                  dkD  r|dz  }n|dz  }|j                  «        Œ¡ |j                  «        ||fS c c}w # t         j                  $ r}t        d|«       |dz  }Y d }~ŒTd }~ww xY w)Ni"  )ÚtimeoutzPRAGMA busy_timeout=290000r   r)   rN   r   r3   rI   F)Úensure_asciizÍINSERT OR IGNORE INTO gov_raw
                   (site_name, source_url, page_url, title, publish_date, content, summary, category, script_name, attachments)
                   VALUES (?,?,?,?,?,?,?,?,?,?)rJ   rK   rM   r   iô  u   å¾�è¯¢è°ƒæŸ¥zcrawl_tangshan_zxdc.pyz	  DB err:)Úsqlite3ÚconnectÚDB_PATHÚexecuteÚcursorÚjsonÚdumpsÚ	SITE_NAMEÚrowcountÚErrorÚprintÚcommitÚclose)	r5   ÚconnÚaddedÚskippedÚcurÚitrD   Úatt_jsonÚes	            r   Ú
push_to_dbrr   f   sL  € Ü�?‰?œ7¨CÔ0€DØ‡L�LÐ-Ô.ØÐ€EˆGØ
�+‰+‹-€CØò ˆÙØ�q‰LˆGØÜ—:‘:ÈRÐP]ÑM^Ö_È¨¨&©	¸!¸E¹(ÓCÒ_ÐnsÔtˆð	Ø�K‰Kð3ô ˜B˜u™I r¨%¡y°"°W±+¸rÀ&¹zÈ2ÈnÑK]Ø�^Ñ$Ò*¨¨D¨SÐ1°>ÐC[Ð]eðgô	ð �|‰|˜aÒØ˜‘
‘à˜1‘�ð 	�‰�ð)ð* 	‡J�J„LØ�'ˆ>Ðùò% `øô �}‰}ò 	Ü�+˜qÔ!Ø�q‰L�Gûð	ús   Á$C9
Â AC>Ã>D,ÄD'Ä'D,c                  óx  — t        j                  «       } | j                  dt        d¬«       | j	                  «       }t        |j                  t        «      }t        j                  «       }t        «       5 }|j                  j                  dddg¬«      }|j                  t        dd	d
œ¬«      }|j                  «       }t        d«       |j!                  t"        dd¬«       t%        d«      D ]N  }t        j&                  d«       |j)                  «       }	d|	vsŒ-t+        |	«      dkD  sŒ<t        d|dz   › d�«        n& t        d«       |j-                  «        	 d d d «       y t        d|› d�«       g }
t%        d|dz   «      D ]P  }	 t/        ||«      }|
j1                  |«       t        d|› dt+        |«      › d�«       t        j&                  d«       ŒR t        dt+        |
«      › d�«       t        d«       g }d }t5        |
d«      D ]ƒ  \  }\  }}	 t7        ||«      }|€|dz  }n#|d!   r|d!   t8        k  rŒ0|j;                  |«       |dz  d k(  r&t        d"|› d#t+        |
«      › d$t+        |«      › �«       t        j&                  d%«       Œ… t        d&«       t=        |«      \  }}t        d'|› d(|› d)|› d*t        j                  «       |z
  d+›d,�	«       |j-                  «        d d d «       y # t2        $ r}t        d|› d|› �«       Y d }~�ŒPd }~ww xY w# t2        $ r}d }Y d }~�Œ	d }~ww xY w# 1 sw Y   y xY w)-Nz--pagesr)   )ÚtypeÚdefaultTz--no-sandboxz---disable-blink-features=AutomationControlled)ÚheadlessÚargsiV  i„  )ÚwidthÚheight)Ú
user_agentÚviewportu   [1/4] è¿‡ç‘žæ•°æŒ‘æˆ˜...iÈ¯  Údomcontentloaded)r\   Ú
wait_untilé
   é   z_$tsiˆ  u       æŒ‘æˆ˜é€šè¿‡ (u   è½®)u       âœ— æŒ‘æˆ˜æœªé€šè¿‡u   [2/4] æŠ“åˆ—è¡¨ 1-z...z    Pz: u    æ�¡z err: gš™™™™™é?u       åˆ—è¡¨å…± u   [3/4] æŠ“è¯¦æƒ…...r   rK   z    [rG   u   ] å·²æ”¶é›† gš™™™™™Ù?u   [4/4] å…¥åº“...u   
=== å®Œæˆ�: æ–°å¢ž u
    / è·³è¿‡ u    / ç©º u
    / è€—æ—¶ z.0fzs ===)ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚminÚpagesÚTOTAL_PAGESÚtimer   ÚchromiumÚlaunchÚnew_contextÚUAÚnew_pagerh   Úgotor+   ÚrangeÚsleepr=   Úlenrj   r8   ÚextendÚ	ExceptionÚ	enumeraterZ   ÚCUTOFFr0   rr   )Úaprw   r†   Út0r   ÚbrowserÚctxr1   Úir4   Ú	all_itemsr2   r5   rq   ÚresultsÚn_emptyÚltitlerE   Údetrl   rm   s                        r   Úmainr    ƒ   s  € Ü	×	 Ñ	 Ó	"€BØ‡O�O�I¤C°€OÔ3Ø�=‰=‹?€DÜ�—
‘
œKÓ(€EÜ	�‰‹€Bä	Ó	ð 2˜aØ—*‘*×#Ñ#¨T¸ÐIxÐ8yÐ#ÓzˆØ×!Ñ!¬RÀDÐTWÑ:XÐ!ÓYˆØ�|‰|‹~ˆÜÐ(Ô)Ø�	‰	”( EÐ6Hˆ	ÔIÜ�r“ò 		ˆAÜ�J‰J�qŒMØ—<‘<“>ˆDØ˜TÒ!¤c¨$£i°$Ó&6ÜÐ*¨1¨Q©3¨%¨tÐ4Ô5Ùð		ô Ð+Ô,Ø�M‰MŒOØ÷2ð 2ô" 	Ð" 5 '¨Ð-Ô.Øˆ	Ü˜˜5 1™9Ó%ò 	ˆBð-Ü" 4¨Ó,�Ø× Ñ  Ô'Ü˜˜b˜T ¤C¨£J <¨tÐ4Ô5ô �J‰J�s�Oð	ô 	�œs 9›~Ð.¨dÐ3Ô4äÐ"Ô#ØˆØˆÜ!*¨9°aÓ!8ò 	ÑˆA‰~�˜ðÜ" 4¨Ó.�ð ˆ{Ø˜1‘‘à�v’; 3 v¡;´Ò#7ØØ—‘˜sÔ#Ø�2‰v˜Š{Ü˜˜a˜S ¤# i£.Ð!1°¼cÀ'»l¸^ÐLÔMÜ�J‰J�s�Oð	ô 	ÐÔ Ü# GÓ,‰ˆˆwÜÐ% e W¨J°w°i¸wÀwÀiÈzÔZ^×ZcÑZcÓZeÐfhÑZhÐilÐYmÐmrÐsÔtØ�‰Œ÷e2ð 2øô0 ò -Ü˜˜b˜T ¨ sÐ+×,Ò,ûð-ûô ò Ø–ûðú÷G2ð 2úsu   Á5B$L0ÄL0Ä)1L0Å##L0Æ8K/Æ?AL0ÈLÈCL0Ë/	LË8LÌ	L0ÌLÌL0Ì	L-Ì L(Ì"L0Ì(L-Ì-L0Ì0L9Ú__main__)Ú__doc__r€   rc   r   r^   rˆ   Úbs4r   Úplaywright.sync_apir   re   r,   r+   r‡   r•   r`   rŒ   r   r'   r8   rZ   rr   r    Ú__name__© r   r   ú<module>r§      sx   ðñó Û Û 	Û Û å Ý /à$€	Ø$€Ø@€Ø€Ø	€Ø
€Øv€òò
ò"ò$4òLò:9ðv ˆzÒÙ…Fð r   