Ë
    àÊ‚j“  ã                   ó8  — 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ej                  j                  dej                  j                  ej                  j                  e«      «      «       ddlmZ dZdZdZdZdd„Zd	„ Zed
k(  r ej*                   e«       «       yy)u�  
crawl_cnqc_zdly.py - é�’å·�åŽ¿äººæ°‘æ”¿åºœ-é‡�ç‚¹é¢†åŸŸä¿¡æ�¯å…¬å¼€ (cnqc.gov.cn)
ç«™ç‚¹: å››å·�å¹¿å…ƒé�’å·�åŽ¿ (ç‘žæ•°4ä»£+å¸�è�”NWAF å�ŒWAF, ä¸Ž ahshx/gdqy å�Œç‰ˆæœ¬)
è¿‡ç›¾: playwright-stealth, å…¨ç¨‹ goto (fetch è¢«ç‘žæ•°æ‹’, goto è¿‡ç›¾å�Ž ~7s/é¡µ)
åˆ—è¡¨: /New/List/20171128112728617.html?page=N (é‡�ç‚¹é¢†åŸŸä¿¡æ�¯å…¬å¼€, 50é¡µ)
  ul > li > a[title]+spanæ—¥æœŸ, è¯¦æƒ… /New/Detail/xxx.html
è¯¦æƒ…: meta ArticleTitle/PubDate/ContentSource, æ­£æ–‡ div.msg-content (æˆªæ–­åˆ°äºŒç»´ç � div_div å‰�)
é™�é€Ÿ: è¯¦æƒ…é—´ 3-8s éš�æœºæŠ–åŠ¨ (ç”¨æˆ·è¦�æ±‚)
æ³¨æ„�: ç”¨æˆ·åŽŸURL(20171201155541049.htmlz)å·²404, ç”¨é‡�ç‚¹é¢†åŸŸä¿¡æ�¯å…¬å¼€æ›¿ä»£
é    N)Úpush_to_searchdbzhttp://cnqc.gov.cnu"   é�’å·�åŽ¿-é‡�ç‚¹é¢†åŸŸä¿¡æ�¯å…¬å¼€Ú20171128112728617zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36c              ƒ   óÆ  K  — ddl m} ddlm}  |«       4 ƒd {  –—† }|j                  j                  ddg d¢¬«      ƒ d {  –—† }|j                  t        dd	d
dœd¬«      ƒ d {  –—† } |«       }|j                  |«      ƒ d {  –—†  |j                  «       ƒ d {  –—† }	 |j                  t        dz   dd¬«      ƒ d {  –—† }|j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† }	t        j                  d|	«      }
t!        d|r|j"                  nd› d|
r|
j%                  d«      d d nd› dt'        |	«      › �«       |
rHd|
j%                  d«      v r5t!        d«       |j)                  «       ƒ d {  –—†  	 d d d «      ƒd {  –—†  yg }t/        «       }t1        d| dz   «      D �];  }	 |j                  t        › dt2        › d|› �dd ¬«      ƒ d {  –—† }|j                  d!«      ƒ d {  –—†  |j                  «       ƒ d {  –—† }	t        j4                  d%|	«      }|st        j4                  d&|	«      }d}|D ]`  \  }}}|j7                  d'«      r|nt        |z   }||vsŒ(|j9                  |«       |j;                  ||j=                  «       |d(œ«       |dz  }Œb t!        d)|› d*t'        |«      › d+|› d,t'        |«      › d-�	«       t'        |«      d.k  s�Œ1t!        d/«        n g }t?        |«      D �]u  \  }}t!        d0|dz   › dt'        |«      › d#|d1   d d2 › d3�«       	 |j                  |d4   dd ¬«      ƒ d {  –—† }|j                  d5«      ƒ d {  –—†  |j                  «       ƒ d {  –—† }d|d d6 v rt!        d7«       Œ’	 |d1   }t        j                  d9|«      }
|
r>|
j%                  d«      j=                  «       r|
j%                  d«      j=                  «       }|d:   }t        j                  d;|«      }
|
r7t        j                  d<|
j%                  d«      «      }|r|j%                  «       }d=}t        j                  d>|«      }
|
r|
j%                  d«      j=                  «       }|s7t        j                  d?|«      }
|
r|
j%                  d«      j=                  «       }|j=                  «       st!        d@«       �ŒÑt        j@                  dAdBt        z   dz   |«      }t        j@                  dCdDt        z   dz   |«      }|j;                  ||d4   |tB        |d=dEœ«       |t'        |«      dz
  k  s�ŒEtE        jF                  tI        jJ                  dFdG«      «      ƒ d {  –—†  �Œx |j)                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  t!        dHt'        «      › dI�«       |rtM        |dJ«       t'        |«      S 7 �Œ¸7 �Œ“7 �Œr7 �ŒU7 �Œ@7 �Œ7 �Œ	7 �Œô7 �Œh7 �ŒZ# t*        $ rN}t!        dt-        |«      d d › �«       |j)                  «       ƒ d {  –—†7   Y d }~d d d «      ƒd {  –—†7   yd }~ww xY w7 �Œj7 �ŒT7 �Œ?# t*        $ r)}t!        d"|› d#t-        |«      d d$ › �«       Y d }~ �Œ�d }~ww xY w7 �Œ?7 �Œ)7 �Œ# t*        $ r%}t!        d8t-        |«      d d$ › �«       Y d }~�Œºd }~ww xY w7 �ŒQ7 �Œ97 �Œ,# 1 ƒd {  –—†7  sw Y   �Œ=xY w­w)KNr   )Úasync_playwright)ÚStealthTz>/root/.cache/ms-playwright/chromium-1228/chrome-linux64/chrome)z--no-sandboxz--disable-setuid-sandboxz---disable-blink-features=AutomationControlled)ÚheadlessÚexecutable_pathÚargszzh-CNi   i„  )ÚwidthÚheightzAsia/Shanghai)Ú
user_agentÚlocaleÚviewportÚtimezone_idú/ÚdomcontentloadediÈ¯  )Ú
wait_untilÚtimeouti˜:  z<title>([^<]*)</title>z  [LOAD] status=ú?z title=é   é(   z len=u	   è¯·ç¨�å€™u     [WAF] æŒ‘æˆ˜æœªè¿‡z  [LOAD ERR] éx   z
/New/List/z.html?page=i@œ  ip  z  [LIST ERR pz] éd   zx<li>\s*<a href="([^"]*Detail[^"]*\.html)"[^>]*title="([^"]*)"[^>]*>[\s\S]{0,200}?</a>\s*<span>(\d{4}-\d{2}-\d{2})</span>zq<a href="([^"]*Detail[^"]*\.html)"[^>]*title="([^"]*)"[^>]*>[\s\S]{0,200}?</a>\s*<span>(\d{4}-\d{2}-\d{2})</span>Úhttp)ÚurlÚtitleÚdateu     ç¬¬u   é¡µ: è§£æž� u    æ�¡, æ–°å¢ž u	    (ç´¯è®¡ ú)é   u     [END] åˆ—è¡¨ç»“æ�Ÿz  [r   é$   z...r   iˆ  iÐ  u       [WAF] è¯¦æƒ…è¢«æ‹¦z    [DETAIL ERR] z/<meta\s+name="ArticleTitle"\s+content="([^"]*)"r   z*<meta\s+name="PubDate"\s+content="([^"]*)"z\d{4}-\d{2}-\d{2}Ú z=<div class="msg-content">([\s\S]*?)</div>\s*<div id="div_div"z)<div class="msg-content">([\s\S]*?)</div>u       [SKIP] æ­£æ–‡ç©ºzhref="/zhref="zsrc="/zsrc=")r   r   Úpub_dateÚ	site_nameÚcontentÚsummaryg      @g       @u     å…± u
    æ�¡æœ‰æ•ˆÚ	cnqc_zdly)'Úplaywright.async_apir   Úplaywright_stealthr   ÚchromiumÚlaunchÚnew_contextÚUAÚapply_stealth_asyncÚnew_pageÚgotoÚBASEÚwait_for_timeoutr$   ÚreÚsearchÚprintÚstatusÚgroupÚlenÚcloseÚ	ExceptionÚstrÚsetÚrangeÚLIST_IDÚfindallÚ
startswithÚaddÚappendÚstripÚ	enumerateÚsubÚ	SITE_NAMEÚasyncioÚsleepÚrandomÚuniformr   )Úpagesr   r   ÚpÚbrowserÚctxÚstealthÚpageÚrespÚhtmlÚmÚeÚ	items_allÚseenÚpgÚrowsÚnew_rowsÚuÚtÚdr   ÚrecordsÚidxÚitÚdhr   r"   Údmr$   s                                ú$/root/gov_crawler/crawl_cnqc_zdly.pyÚ	run_asyncrb      sŸ  è ø€ Ý5Ý*ÙÓ!÷ gð g QØŸ
™
×)Ñ)ØØ\Únð *ó 
÷ 
ˆð
 ×'Ñ'´2¸gØ;?È3Ñ1OÐ]lð (ó n÷ nˆá“)ˆØ×)Ñ)¨#Ó.×.Ð.Ø—\‘\“^×#ˆð	ØŸ™¤4¨#¡:Ð:LÐV[˜Ó\×\ˆDØ×'Ñ'¨Ó.×.Ð.ØŸ™›×'ˆDÜ—	‘	Ð3°TÓ:ˆAÜÐ$±D T§[¢[¸cÐ$BÀ'Ñ]^È!Ï'É'ÐRSË*ÐUXÐVXÉ/ÐdgÐIhÐhmÔnqÐrvÓnwÐmxÐyÔzÙ�[ A§G¡G¨A£JÑ.ÜÐ,Ô-Ø—m‘m“o×%Ð%Ø÷-g÷ gð gð: ˆ	Ü‹uˆÜ˜˜5 1™9Ó%ó 	ˆBðØ!ŸY™Y¬$¨¨z¼'¸À+ÈbÈTÐ'RÐ_qð  |A˜Yó  B÷  B�Ø×+Ñ+¨DÓ1×1Ð1Ø!Ÿ\™\›^×+�ô —:‘:ð  Zð  \`ó  aˆDÙÜ—z‘zð  #Wð  Y]ó  ^�ØˆHØò "‘��1�aØŸ<™<¨Ô/‘a´T¸A±X�Ø˜d’?Ø—H‘H˜S”MØ×$Ñ$¨S¸1¿7¹7»9ÈaÑ%PÔQØ ‘M‘Hð"ô �E˜"˜˜\¬#¨d«)¨°MÀ(ÀÈ9ÔUXÐYbÓUcÐTdÐdeÐfÔgÜ�4‹y˜2Œ~ÜÐ,Ô-Ùð+	ð0 ˆÜ  Ó+ó .	>‰GˆC�Ü�C˜˜A™�w˜a¤ I£Ð/¨r°"°W±+¸c¸rÐ2BÐ1CÀ3ÐGÔHð	Ø!ŸY™Y r¨%¡yÐ=OÐY^˜YÓ_×_�Ø×+Ñ+¨DÓ1×1Ð1ØŸ<™<›>×)�Ø " U d )Ñ+ÜÐ2Ô3Øð ,ð �w‘KˆEÜ—	‘	ÐLÈbÓQˆAÙ�Q—W‘W˜Q“Z×%Ñ%Ô'ØŸ™ ›
×(Ñ(Ó*�Ø˜&‘zˆHÜ—	‘	ÐGÈÓLˆAÙÜ—Y‘YÐ3°Q·W±W¸Q³ZÓ@�ÙØ!Ÿx™x›z�HàˆGÜ—	‘	ÐZÐ\^Ó_ˆAÙØŸ'™' !›*×*Ñ*Ó,�ÙÜ—I‘IÐJÈBÓO�ÙØŸg™g a›j×.Ñ.Ó0�GØ—=‘=”?ÜÐ,Ô-ÙÜ—f‘f˜Z¨´D©¸3Ñ)>ÀÓHˆGÜ—f‘f˜Y¨´$©¸Ñ(<¸gÓFˆGØ�N‰NØØ˜%‘yØ$Ü&Ø"Øñô ð ”S˜“^ aÑ'Ô'Ü—m‘m¤F§N¡N°3¸Ó$<Ó=×=Ò=ð].	>ð^ �m‰m‹o×Ð÷Og÷ gôR 
ˆF”3�w“<�. 
Ð
+Ô,ÙÜ˜ +Ô.Üˆw‹<ÐðYgùð
ùð
nùð 	/ùØ#ùð ]ùØ.ùØ'ùð
 &ùð+gúô. ò 	Ü�M¤# a£&¨¨# , Ð0Ô1Ø—-‘-“/×!Ñ!Û÷5g÷ gñ gûð.	úð BùØ1ùØ+úÜò Ü˜ b T¨¬C°«F°4°C¨L¨>Ð:Ô;Þûðúð. `ùØ1ùØ)úô ò ÜÐ)¬#¨a«&°°#¨,¨Ð8Ô9ÝûðúðJ >ùØùðOgù÷ g÷ gò güs)  ‚[!šW›[!ž$[ÁWÁ#[Á&WÁ'[ÂWÂ[ÂWÂ[Â$W0ÃW!ÃW0ÃW$ÃW0Ã3W'Ã4BW0ÆW*ÆW0Æ[!ÆW-Æ[!Æ[Æ9'YÇ Y
Ç!YÇ9YÇ:YÈYÈYÈA[É0A3[Ë%A	[Ì/ZÍ	ZÍ
ZÍ"ZÍ#ZÍ:ZÍ;ZÎF2[Õ,[Õ1[Õ2[Ö[Ö[Ö[!Ö[Ö6[!×[×[×[×[×!W0×$W0×'W0×*W0×-[!×0	Y×9-YØ&X)Ø'YØ,[Ø0[!Ø;X>Ø<[!ÙYÙ[Ù
YÙYÙYÙ	ZÙZ Ù9[Ú ZÚ[ÚZÚZÚZÚ	Z?ÚZ:Ú4[Ú:Z?Ú?[Û[Û[!Û[Û[Û[Û[!c                  ó\  — dd l } | j                  «       }|j                  dt        d¬«       |j                  dd¬«       |j	                  «       }|j
                  rdn|j                  }t        d	t        › d
|› �«       t        j                  t        |¬«      «      }t        d|› d�«       y)Nr   z--pagesé   )ÚtypeÚdefaultz--allÚ
store_true)Úactioné2   z  z pages=)rJ   zDone: z records)ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚallrJ   r4   rE   rF   Úrunrb   )rj   Úparserr
   rJ   Úcnts        ra   Úmainrs   ˆ   s–   € ÛØ×$Ñ$Ó&€FØ
×Ñ˜	¬°QÐÔ7Ø
×Ñ˜¨ÐÔ5Ø×ÑÓ€DØ—(’(‰B §
¡
€EÜ	ˆBŒyˆk˜  Ð
(Ô)Ü
�+‰+”i eÔ,Ó
-€CÜ	ˆF�3�%�xÐ
 Ô!Øó    Ú__main__)rd   )Ú__doc__ÚsysÚosr2   rF   rH   ÚtimeÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   r0   rE   r=   r,   rb   rs   Ú__name__Úexit© rt   ra   ú<module>rƒ      sƒ   ðñ	÷ *× )× )Ø ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (à€Ø0€	Ø
€Øv€óoòd
ð ˆzÒØ€C‡H�H‰T‹VÕð rt   