Ë
    ¸¬uj·  ã                   óÄ  — d Z ddlZddlZddlZddlZddlmZmZ ddlZddlm	Z	  ej                  dd«      ZdZ ej                  «        ed¬	«      z
  Zd
ddœZg d¢ZdZdZddlZ eej*                  «      dkD  r2ej*                  d   j-                  «       r eej*                  d   «      ndZe� ed ee«      z   «       d„ Zd„ Zd„ Zd„ Zd„ Zd„ Z e!dk(  r e «        yy)uŒ   
crawl_ahsthj.py â€” å®‰å¾½çœ�ç”Ÿæ€�çŽ¯å¢ƒåŽ…-å»ºè®¾é¡¹ç›®çŽ¯è¯„å®¡æ‰¹
åˆ—è¡¨: requests + API (æ— WAF, JSON)
è¯¦æƒ…: Playwright (WAFç»•è¿‡)
é    N)ÚdatetimeÚ	timedelta)Úsync_playwrightÚ	SEARCH_DBz/root/search.dbu1   å®‰å¾½çœ�ç”Ÿæ€�çŽ¯å¢ƒåŽ…-å»ºè®¾é¡¹ç›®çŽ¯è¯„å®¡æ‰¹iG  )Údaysz[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36zhttps://sthjt.ah.gov.cn/)z
User-AgentÚReferer)z--no-sandboxz---disable-blink-features=AutomationControlledz--disable-dev-shm-usagez'https://sthjt.ah.gov.cn/site/label/8888z$https://sthjt.ah.gov.cn/public/21691é   z[AutoPg] max_pages=c                  ó€   — dd l } | j                  t        d¬«      }|j                  d«       |j                  d«       |S )Nr   é<   ©ÚtimeoutzPRAGMA journal_mode=WALzPRAGMA busy_timeout=5000)Úsqlite3ÚconnectÚDB_PATHÚexecute)r   Úconns     ú!/root/gov_crawler/crawl_ahsthj.pyÚget_dbr      s6   € ÛØ�?‰?œ7¨Bˆ?Ó/€DØ‡L�LÐ*Ô+Ø‡L�LÐ+Ô,Ø€Kó    c                 ó   — d}|d   r3t        |d   «      dk\  r"	 t        |d   d d j                  dd«      «      }| j                  dt        |d   |d   |d   |d	   |j                  d
t        «      |f«       y #  Y ŒBxY w)Nr   Úpublish_dateé
   ú-Ú z›INSERT OR IGNORE INTO gov_raw
           (site_name, page_url, title, publish_date, content, source_url, date_rank)
           VALUES (?, ?, ?, ?, ?, ?, ?)ÚurlÚtitleÚcontentÚsource)ÚlenÚintÚreplacer   Ú	SITE_NAMEÚget)r   ÚartÚ	date_ranks      r   Úinsert_articler&   &   s™   € Ø€IØ
ˆ>Òœs 3 ~Ñ#6Ó7¸2Ò=ð	Ü˜C Ñ/°°Ð4×<Ñ<¸SÀ"ÓEÓFˆIð 	‡L�Lð	+ô 
�C˜‘J  G¡¨c°.Ñ.AØ	ˆY‰˜Ÿ™ ¬9Ó5°yð	Bõ	øð	Ùús   š!A9 Á9A=c                 ó6  — dddd| dddddd	œ
}	 t        j                  t        |t        d
¬«      }d|_        |j
                  dk7  rddg fS |j                  «       }||j                  dd«      |j                  dg «      fS # t        $ r}ddg fcY d}~S d}~ww xY w)u   èŽ·å�–åˆ—è¡¨é¡µJSONÚpublicInfoListi¿“g i»T  é   Útruez
yyyy-MM-ddé   iSó)
Ú	labelNameÚsiteIdÚorganIdÚpageSizeÚ	pageIndexÚisDateÚ
dateFormatÚtypeÚisJsonÚcatIdé   )ÚparamsÚheadersr   zutf-8éÈ   Nr   ÚtotalÚdata)Úrequestsr#   ÚAPI_URLÚHEADERSÚencodingÚstatus_codeÚjsonÚ	Exception)Ú
page_indexr7   Úrespr;   Úes        r   Úget_list_apirF   5   s¦   € ð &°ÀUØ Z¸6Ø"¨A¸È(ñ€Fð
Ü�|‰|œG¨F¼GÈRÔPˆØˆŒØ×Ñ˜sÒ"Ø˜˜B�;ÐØ�y‰y‹{ˆØ�T—X‘X˜g qÓ)¨4¯8©8°F¸BÓ+?Ð?Ð?øÜò Ø�Q˜ˆ{Õûðús#   �;B  Á4B  Â 	BÂ	BÂBÂBc           
      ó„  — g }| D ]±  }|j                  d«      }|j                  dd«      j                  «       }|j                  d«      xs ddd }|r|sŒQ|r"	 t        j                  |d«      }|t        k  rŒt	 |j                  t        › d|› d	�|||j                  d
t        «      xs t        |dœ«       Œ³ |S #  Y ŒExY w)u   è§£æž�åˆ—è¡¨é¡¹Ú	contentIdr   r   ÚpublishDateNr   z%Y-%m-%dú/z.htmlÚauthor)r   r   Údater   Ú
content_id)r#   Ústripr   ÚstrptimeÚTHREE_YEARS_AGOÚappendÚBASE_DETAILr"   )Ú	raw_itemsÚarticlesÚitemÚcidr   Úpub_dateÚdts          r   Úparse_itemsrY   F   sÙ   € à€HØò ˆØ�h‰h�{Ó#ˆØ—‘˜ "Ó%×+Ñ+Ó-ˆØ—H‘H˜]Ó+Ò1¨r°3°BÐ7ˆÙ™%ØÙðÜ×&Ñ& x°Ó<�ØœÒ'Øð (ð 	�‰Ü!�] ! C 5¨Ð.ØØØ—h‘h˜x¬Ó3Ò@´yØñ
õ 	ðð( €OøðÙús   ÁB;Â;B?c                 óÞ  — 	 	 | j                  |dd¬«       t        j                  d«       | j                  d	«      }d
}|r|j	                  «       j                  «       }d
}| j                  d«      }|r7t        j                  d|j                  «       «      }|r|j                  d«      }||fS #  	 | j                  |d¬«       t        j                  d«       n#  Y Y yxY wY Œ¹xY w#  Y yxY w)u   Playwrightçˆ¬å�–è¯¦æƒ…Údomcontentloadedi N  )Ú
wait_untilr   g      ø?i˜:  r   é   )r   r   z".j-fontContent.newscontnet.minh500r   z	.newsinfoz(\d{4}-\d{2}-\d{2})r	   )
ÚgotoÚtimeÚsleepÚquery_selectorÚ
inner_htmlrN   ÚreÚsearchÚ
inner_textÚgroup)Úpager   Ú
content_elr   rW   Úinfo_elÚms          r   Úcrawl_detail_playwrightrk   _   sê   € ðð	Ø�I‰I�cÐ&8À%ˆIÔHÜ�J‰J�sŒOð ×$Ñ$Ð%IÓJ€JØ€GÙØ×'Ñ'Ó)×/Ñ/Ó1ˆð €HØ×!Ñ! +Ó.€GÙÜ�I‰IÐ,¨g×.@Ñ.@Ó.BÓCˆÙØ—w‘w˜q“zˆHà�HÐÐøð/	ðØ—	‘	˜# u�	Ô-Ü—
‘
˜1•øðÚúñ ûðÙús;   ƒ)B/ Â/C%Â2(CÃC%ÃC ÃC%ÃC( Ã C%Ã#C( Ã(C,c                  óÔ  — t        dd› �«       t        dt        › d�«       g } d}t        d«       t        dt        dt        xs d«      «      D ]­  }t        |«      \  }}}|�|s|dk(  rt        d	«        y  n†|dk(  r#|j                  d
d«      }t        d|› d|› �«       t        |«      }|s nO| j                  |«       t        d|› dt        |«      › dt        | «      › d�«       t        j                  d«       Œ¯ t        dt        | «      › d�«       | sy d}t        «       }t        dt        | «      › d�«       t        «       5 }	|	j                  j                  dt         ¬«      }
|
j#                  «       }t%        | «      D ]Õ  \  }}t'        ||d   «      \  }}|rt        |«      dk  r't        d|dz   › dt        | «      › d|d   d d › �«       ŒO|d   |d   |xs |d   ||d    d!œ}t)        ||«       |dz  }|d"z  dk(  r|j+                  «        |d#z  dk(  r)t        d|dz   › dt        | «      › d$|› d%|d   d d › �«       t        j                  d&«       Œ× |j+                  «        |
j-                  «        d d d «       |j-                  «        t        dd› �«       t        d't        › d(�«       t        d)t        | «      › d*|› d+�«       t        d› «       y # 1 sw Y   ŒbxY w),Nú
z2==================================================ú[ú]r   u)   é˜¶æ®µ1: çˆ¬å�–åˆ—è¡¨ (requests + API)...r	   r9   u     [ERR] åˆ—è¡¨APIå¤±è´¥Ú	pageCountu     æ€»è®°å½•: u   , æ€»é¡µæ•°: z  page z: u    æ�¡ (ç´¯è®¡ ú)g333333Ó?u   
  åˆ—è¡¨å�ˆè®¡: u    æ�¡ (è¿‘3å¹´)u#   é˜¶æ®µ2: çˆ¬å�–è¯¦æƒ… (Playwright, u    æ�¡)...T)ÚheadlessÚargsr   é2   z  [rJ   u   ] â�Œ å†…å®¹ç©º: r   é(   rL   r   )r   r   r   r   r   r   é   u   ] âœ… u    æ�¡ -- g      à?u   âœ… u    å®Œæˆ�!u
     åˆ—è¡¨: u    æ�¡, å…¥åº“: u    æ�¡)Úprintr"   ÚrangeÚminÚ_MAX_PGrF   r#   rY   Úextendr   r_   r`   r   r   ÚchromiumÚlaunchÚBROWSER_ARGSÚnew_pageÚ	enumeraterk   r&   ÚcommitÚclose)Ú	all_itemsÚtotal_pagesÚpir;   r:   ÚrawÚartsÚtotal_insertedr   ÚpÚbrowserrg   ÚirU   r   rW   r$   s                    r   ÚmainrŒ   ~   s  € Ü	ˆBˆvˆhˆ-ÔÜ	ˆAŒiˆ[˜Ð
Ôà€IØ€Kô 
Ð
5Ô6Ü�A”s˜3¤¢¨3Ó/Ó0ò ˆÜ'¨Ó+Ñˆˆe�SØˆ<™sØ�QŠwÜÐ/Ô0ÙÙØ�Š7ØŸ(™( ;°Ó2ˆKÜ�M % ¨°k°]ÐCÔDä˜3ÓˆÙÙØ×Ñ˜ÔÜ�˜�t˜2œc $›i˜[¨´c¸)³nÐ5EÀQÐGÔHÜ�
‰
�3�ð!ô$ 
Ðœs 9›~Ð.¨nÐ
=Ô>ÙØð €NÜ‹8€DÜ	Ð/´°I³Ð/?¸xÐ
HÔIä	Ó	ð ˜aØ—*‘*×#Ñ#¨T¼Ð#ÓEˆØ×ÑÓ!ˆä  Ó+ò 	‰GˆAˆtÜ 7¸¸dÀ5¹kÓ JÑˆG�XÙœc '›l¨RÒ/Ü˜˜A˜a™C˜5 ¤# i£.Ð!1Ð1BÀ4ÈÁ=ÐQTÐRTÐCUÐBVÐWÔXØð ˜g™Ø˜E‘{Ø (Ò 8¨D°©LØ"Ø˜x™.ñˆCô ˜4 Ô%Ø˜aÑˆNà�2‰v˜Š{Ø—‘”Ø�1‰u˜ŠzÜ˜˜A˜a™C˜5 ¤# i£.Ð!1°¸Ð7GÀxÐPTÐU\ÑP]Ð^aÐ_aÐPbÐOcÐdÔeä�J‰J�s�Oð+	ð. 	�‰ŒØ�‰Œ÷9ð< 	‡J�J„LÜ	ˆBˆvˆhˆ-ÔÜ	ˆD”�˜8Ð
$Ô%Ü	ˆJ”s˜9“~Ð& n°^Ð4DÀDÐ
IÔJÜ	ˆVˆHÕ÷Eð ús   ÅD5KËK'Ú__main__)"Ú__doc__rc   r_   ÚosÚsysr   r   r<   Úplaywright.sync_apir   Úgetenvr   r"   ÚnowrP   r>   r~   r=   rR   Ú_SYSr   ÚargvÚisdigitr    rz   rw   Ústrr   r&   rF   rY   rk   rŒ   Ú__name__© r   r   ú<module>rš      sï   ðñ÷ × ß (Û Ý /à
ˆ"�)‰)�KÐ!2Ó
3€Ø?€	Ø�(—,‘,“.¡9°'Ô#:Ñ:€àoØ)ñ€ò l€à
3€Ø4€Û Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/òòòò"ò2ò>FðP ˆzÒÙ…Fð r   