Ë
    ¸¬ujn  ã                   óä  — 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mZmZ ej                  j                  dej                  j                  ej                  j                  e«      «      «       ddlmZ dZdZdZ ej&                  ej(                  «       ed¬	«      z
  j+                  d
«      ZdZdd„Zedk(  r¶ eej6                  «      dkD  xr ej6                  d   dv ZdZ eej6                  «      D ]<  \  ZZ e dk(  sŒedz    eej6                  «      k  sŒ% e!ej6                  edz      «      ZŒ>  ej                  «       Z" eee¬«        e#d ej                  «       e"z
  d›d�«       yy)u  
è�£ç››çŸ³åŒ–-æ–°é—»ä¸“åŒº (www.cnrspc.com/xwzq)
ä¸‡ç½‘/é˜¿é‡Œäº‘å»ºç«™ CMSï¼Œéœ€ Playwright æ¸²æŸ“
åˆ—è¡¨: <a href="/newsinfo/XXX"> æ ‡é¢˜
æ—¥æœŸ: .w-al-date
è¯¦æƒ…: .w-detail æ­£æ–‡, .w-createtime-date æ—¥æœŸ
åˆ†é¡µ: <a href="javascript:void(0);">N</a> ç‚¹å‡»ç¿»é¡µï¼Œå…±~10é¡µ
é    N)ÚdatetimeÚtimezoneÚ	timedelta)Úpush_to_searchdbu   è�£ç››çŸ³åŒ–-æ–°é—»ä¸“åŒºzhttps://www.cnrspc.com/xwzqzwww.cnrspc.comiG  )Údaysz%Y-%m-%dé   c                 óH	  — t        dd› dt        › dd› �«       t        d«       ddlm} g }t	        «       } |«       5 }|j
                  j                  d¬«      }|j                  «       }|j                  t        d	d
¬«       t        j                  d«       t        }d}	t        d|dz   «      D �]X  }
|	r �nSt        d|
› d�dd¬«       |j                  d«      }d}|D �]Í  }|d   |v rŒ|d   r|d   t        k  rd}	 �n¯|j!                  |d   «       |d   j#                  «       }t        dt%        |«      dz   › d|d d › d�dd¬«       	 |j                  «       }|j                  |d   d	d
¬«       t        j                  d«       |j'                  «       }|r%t)        j*                  dd|«      j#                  «       n|}|d   }	 |j-                  d«      }|j-                  d«      }|rU|j/                  «       j#                  «       }|r|j/                  «       j#                  «       nd}|› d|› �j#                  «       }d}	 |j-                  d «      }|r›|j1                  «       }t)        j*                  d!d"t2        › d#�|«      }t)        j*                  d$d|«      }t)        j*                  d%d|«      }t)        j*                  d&d|«      }t)        j*                  d'd(|«      }|j#                  «       }|j5                  «        |sd)|› d*�}t)        j*                  d+d|«      j#                  «       d d, }|rt)        j*                  d-d|«      n|}|j7                  t        ||d   ||r|d d. nd|t        d/œ«       |dz  }t        d0t%        |«      › d1�d¬2«       |s�Œ¼t%        |«      |k\  s�ŒÌd}	 n t        d5|› d6�dd¬«       |	r nE|
|k  s�Œ|
dz   }|j                  d7|«      }|st        d8«        nt        j                  d«       �Œ[ |j5                  «        d d d «       |r%t=        |d9«       t        d:t%        |«      › d;�«       y t        d<«       y #  Y �ŒxY w#  Y �ŒqxY w# t8        $ r'}t        d3t;        |«      d d4 › �d¬2«       Y d }~�Œ²d }~ww xY w# 1 sw Y   ŒxY w)=Nú
z2==================================================u   
ðŸ�  u   â�³ å�¯åŠ¨ Playwright...r   )Úsync_playwrightT)ÚheadlessÚnetworkidlei0u  )Ú
wait_untilÚtimeouté   Fé   u   
  ðŸ“„ ç¬¬u   é¡µ: Ú )ÚendÚflushaô  () => {
                const results = [];
                const links = document.querySelectorAll('a[href*="/newsinfo/"]');
                const seen = new Set();
                for (const a of links) {
                    const href = a.href;
                    const title = a.textContent.trim();
                    if (!title || title.length < 5 || seen.has(href)) continue;
                    seen.add(href);
                    const itemEl = a.closest('li, div');
                    const dateEl = itemEl ? itemEl.querySelector('.w-al-date') : null;
                    const date = dateEl ? dateEl.textContent.trim() : '';
                    results.push({href, title, date});
                }
                return results;
            }ÚhrefÚdateÚtitlez
    [z] é-   z...ú é   u-   \s*[-â€”|]\s*è�£ç››çŸ³åŒ–è‚¡ä»½æœ‰é™�å…¬å�¸.*z.w-createtime-datez.w-createtime-timez	.w-detailzsrc="(?!https?://)(/[^"]+)"zsrc="https://z\1"zsrc="(?!https?://)([^/][^"]*)"z style="[^"]*"z\s+height="[^"]*"z width="100%"z- style="width:100%;height:auto;display:block"z<p>z</p>z<[^>]+>i,  z\s+é
   )Ú	site_namer   ÚurlÚcontentÚpub_dateÚsummaryÚtagsu   âœ… (z chars))r   u   â�Œ é<   z +u   æ�¡a‘  pn => {
                    const links = document.querySelectorAll('a');
                    for (const a of links) {
                        if (a.textContent.trim() === String(pn) && a.href === 'javascript:void(0);') {
                            a.click();
                            return true;
                        }
                    }
                    return false;
                }u    (æ— ä¸‹ä¸€é¡µ)Úcnrspcu   
âœ… å®Œæˆ�! å…± u    æ�¡u   
â�­ æ— æ–°æ•°æ�®)ÚprintÚ	SITE_NAMEÚplaywright.sync_apir   ÚsetÚchromiumÚlaunchÚnew_pageÚgotoÚLIST_URLÚtimeÚsleepÚ	MAX_PAGESÚrangeÚevaluateÚTHREE_YEARS_AGOÚaddÚstripÚlenr   ÚreÚsubÚquery_selectorÚtext_contentÚ
inner_htmlÚDOMAINÚcloseÚappendÚ	ExceptionÚstrr   )ÚincrementalÚlimitr   Ú	all_itemsÚ	seen_urlsÚpwÚbrowserÚpageÚtotal_pagesÚstopÚpgÚitemsÚpage_newÚitemr   Údetail_pageÚ
page_titleÚfinal_titler   Údate_elÚtime_elÚdÚtr   Ú	detail_elÚhtmlr    ÚeÚnext_pnÚclickeds                                 ú!/root/gov_crawler/crawl_cnrspc.pyÚcrawlrZ      sÅ  € Ü	ˆBˆvˆh�gœi˜[¨¨6¨(Ð
3Ô4Ü	Ð
$Ô%å3à€IÜ“€Iá	Ó	ð F˜bØ—+‘+×$Ñ$¨dÐ$Ó3ˆØ×ÑÓ!ˆØ�	‰	”( }¸eˆ	ÔDÜ�
‰
�1ŒäˆØˆä˜˜;¨™?Ó+ó {	ˆBÙÚÜ�L   EÐ*°¸$Õ?ð —M‘Mð #ó ˆEð$ ˆHØó K�Ø˜‘< 9Ñ,ØØ˜’< D¨¡L´?Ò$BØ�DÚà—‘˜d 6™lÔ+Ø˜W™×+Ñ+Ó-�Ü˜¤ I£¨qÑ 0Ð1°°E¸#¸2°J°<¸sÐCÈÐTXÕYð;Ø")×"2Ñ"2Ó"4�KØ×$Ñ$ T¨&¡\¸mÐUZÐ$Ô[Ü—J‘J˜q”Mð "-×!2Ñ!2Ó!4�Jñ wA¤"§&¡&Ð)YÐ[]Ð_iÓ"j×"pÑ"pÔ"rð  GL�Kð  $ F™|�HðØ"-×"<Ñ"<Ð=QÓ"R˜Ø"-×"<Ñ"<Ð=QÓ"R˜Ù"Ø '× 4Ñ 4Ó 6× <Ñ <Ó >˜AÙBI × 4Ñ 4Ó 6× <Ñ <Ô >Èr˜AØ*+¨¨A¨a¨S z×'7Ñ'7Ó'9˜Hð
 !�GðØ$/×$>Ñ$>¸{Ó$K˜	Ù$Ø#,×#7Ñ#7Ó#9˜Dä#%§6¡6Ð*HÈ]Ô[aÐZbÐbeÐJfÐhlÓ#m˜DÜ#%§6¡6Ð*KÈRÐQUÓ#V˜DÜ#%§6¡6Ð*;¸RÀÓ#F˜DÜ#%§6¡6Ð*>ÀÀDÓ#I˜DÜ#%§6¡6Ð*:Ð<kÐmqÓ#r˜DØ&*§j¡j£l˜Gð  ×%Ñ%Ô'á"Ø$'¨ w¨dÐ"3˜ä Ÿf™f Z°°gÓ>×DÑDÓFÀtÈÐL�GÙ>EœbŸf™f V¨S°'Ô:È;�Gà×$Ñ$Ü%.Ø!,Ø# F™|Ø#*Ù5= H¨S¨b¡MÀ2Ø#*Ü )ñ&ô ð  ‘M�HÜ˜E¤# g£, ¨wÐ7¸tÕDó œS ›^¨uÔ4Ø�DÙðWKôZ �B�x�j Ð$¨"°DÕ9áÙð �KÔØ˜q™&�ØŸ-™-ð 	-ð ó	 �ñ ÜÐ+Ô,ÙÜ—
‘
˜1–ðw{	ðz 	�‰Œ÷MFñP Ü˜ HÔ-ÜÐ"¤3 y£>Ð"2°$Ð7Õ8äÐ"Õ#øðYÚûðÚûô, !ò Ü˜D¤ Q£¨¨  Ð.°dÕ;Ýûðú÷OFð Fús}   ½DRÅA:Q%ÇA9QÉ Q%ÉB.QË1B%Q%ÎRÎRÎ* RÏARÑQ	ÑQ%ÑQ"	ÑQ%Ñ%	R	Ñ.R	Ò
RÒR	ÒRÒR!Ú__main__r   )Ú1z--incrementalz--limit)r@   rA   u   â�± è€—æ—¶: z.1fÚs)FN)$Ú__doc__ÚsysÚosr6   r-   Újsonr   r   r   ÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   r%   r,   r;   ÚnowÚutcÚstrftimer2   r/   rZ   Ú__name__r5   Úargvr@   rA   Ú	enumerateÚiÚaÚintÚt0r$   © ó    rY   ú<module>rt      sM  ðñ÷ × Ó ß 2Ñ 2Ø ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (à'€	Ø(€Ø	€Ø�8—<‘< §¡Ó-±	¸uÔ0EÑE×OÑOÐPZÓ[€Ø€	óU$ðn ˆzÒÙ�c—h‘h“- !Ñ#ÒM¨¯©°©Ð7MÐ(M€KØ€EÙ˜#Ÿ(™(Ó#ò '‰ˆˆ1Ø�	‹>˜a ™c¡C¨¯©£MÓ1Ù˜Ÿ™  1¡™Ó&‰Eð'ð 
ˆ�‰‹€BÙ	�k¨Õ/Ù	ˆL˜˜Ÿ™› R™¨Ð,¨AÐ
.Õ/ð rs   