Ë
    ³¼‚jÎ  ã                   ó.  — d 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e› d�ZdZdd„Zd	„ Zed
k(  r ej&                   e«       «       yy)u¡  
crawl_rongcheng_gggs.py - è�£æˆ�å¸‚äººæ°‘æ”¿åºœ-å…¬å‘Šå…¬ç¤º (col61226, number=RCA21)
ç«™ç‚¹: www.rongcheng.gov.cn (TRS ç³», æ—  WAF, curl å�¯ç›´è¿žåˆ—è¡¨é¡µä½† search.jsp éœ€æµ�è§ˆå™¨ä¸Šä¸‹æ–‡)
åˆ—è¡¨: é¡µé�¢ div56364 ç”± loadDynamic('/module/xxgk/search.jsp?infotypeId=RCA21...') æ¸²æŸ“
  ç¿»é¡µ: è°ƒç”¨é¡µé�¢å…¨å±€ funGoPage('/module/xxgk/search.jsp', N) (AJAX, ä¸�åˆ·æ–°é¡µé�¢)
  curl ç›´è¿ž search.jsp å…¨éƒ¨è¢«æ‹’("è¯·ä¼ å…¥æ­£ç¡®å�‚æ•°") â†’ å¿…é¡» playwright é¡µé�¢å†…æ“�ä½œ
  æ¯�é¡µ 20 æ�¡, å…± 7727 æ�¡/387 é¡µ
è¯¦æƒ…: /art/YYYY/M/D/art_61226_XXXX.html
  meta ArticleTitle/PubDate, æ­£æ–‡ <meta name="ContentStart"> åˆ° <meta name="ContentEnd">, å®¹å™¨ div.xqwz
é    N)Úpush_to_searchdbzhttp://www.rongcheng.gov.cnu   è�£æˆ�å¸‚-å…¬å‘Šå…¬ç¤ºz%/col/col61226/index.html?number=RCA21zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36c              ƒ   ób  K  — ddl m}  |«       4 ƒd {  –—† }|j                  j                  ddg d¢¬«      ƒ d {  –—† }|j	                  t
        ddd	d
œd¬«      ƒ d {  –—† }|j                  «       ƒ d {  –—† }	 |j                  t        dd¬«      ƒ d {  –—† }|j                  d«      ƒ d {  –—†  t        d|r|j                  nd› �«       g }t        «       }	t!        d| dz   «      D �]  }
|
dkD  r>	 |j#                  dt$        › d|
› d�«      ƒ d {  –—†  |j                  d«      ƒ d {  –—†  |j#                  d«      ƒ d {  –—† }d}|D ]]  }|d   j'                  d«      r|d   nt$        |d   z   }||	vsŒ-|	j)                  |«       |j+                  ||d    |d!   d"œ«       |dz  }Œ_ t        d#|
› d$t-        |«      › d%|› d&t-        |«      › d�	«       t-        |«      d'k  sŒýt        d(«        n g }t/        |«      D �]L  \  }}t        d)|dz   › d*t-        |«      › d|d    d d+ › d,�«       	 |j                  |d-   dd.¬«      ƒ d {  –—† }|j                  d/«      ƒ d {  –—†  |j1                  «       ƒ d {  –—† }|d    }t3        j4                  d1|«      }|r>|j7                  d«      j9                  «       r|j7                  d«      j9                  «       }|d!   }t3        j4                  d2|«      }|r7t3        j4                  d3|j7                  d«      «      }|r|j7                  «       }d4}|j;                  d5«      }|j;                  d6«      }|dkD  r$||kD  r||t-        d5«      z   | j9                  «       }|sRt3        j4                  d7|«      }|r:|j7                  d«      }|j;                  d8«      }|dkD  r||d  j9                  «       }|j9                  «       st        d9«       �Œìt3        j<                  d:d;t$        z   d*z   |«      }t3        j<                  d<d=t$        z   d*z   |«      }|j+                  ||d-   |t>        |d4d>œ«       �ŒO |j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  t        d?t-        «      › d@�«       |rtA        |dA«       t-        |«      S 7 �Œ›7 �Œv7 �ŒU7 �Œ@7 �Œ"7 �Œ# 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 �Œ7 �Œî# t        $ r)}t        d|
› dt        |«      d d › �«       Y d }~ �ŒUd }~ww xY w7 �Œ7 �Œ
7 �Œô7 �Œß# t        $ r%}t        d0t        |«      d d › �«       Y d }~�Œ…d }~ww xY w7 �Œ*7 �Œ# 1 ƒd {  –—†7  sw Y   �Œ.xY w­w)BNr   )Úasync_playwrightTz>/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  [LOAD] status=ú?z  [LOAD ERR] éx   é   zfunGoPage('z/module/xxgk/search.jsp', ú)ip  z  [PAGE ERR pz] éd   a�  () => {
                const div = document.getElementById('div56364');
                if (!div) return [];
                const out = [];
                const seenHref = new Set();
                for (const tr of div.querySelectorAll('tr')) {
                    const a = tr.querySelector('a[href*="/art/"]');
                    if (!a) continue;
                    const href = a.getAttribute('href');
                    if (!href || seenHref.has(href)) continue;
                    seenHref.add(href);
                    const txt = tr.textContent.replace(/\s+/g, ' ').trim();
                    const dm = txt.match(/(\d{4})-(\d{2})-(\d{2})/);
                    out.push({
                        href: href,
                        title: a.textContent.trim(),
                        date: dm ? dm[0] : ''
                    });
                }
                return out;
            }ÚhrefÚhttpÚtitleÚdate)Úurlr   r   u     ç¬¬u   é¡µ: è¯»å�– u    è¡Œ, æ–°å¢ž u	    (ç´¯è®¡ é   u     [END] åˆ—è¡¨ç»“æ�Ÿz  [ú/é&   z...r   i0u  iÄ	  z    [DETAIL ERR] z/<meta\s+name="ArticleTitle"\s+content="([^"]*)"z*<meta\s+name="PubDate"\s+content="([^"]*)"z\d{4}-\d{2}-\d{2}Ú z<meta name="ContentStart">z<meta name="ContentEnd">z9<div class="xqwz">([\s\S]*?)(?:<div class="xqfx"|</body>)u   <!--<$[ä¿¡æ�¯å†…å®¹]>begin-->u       [SKIP] æ­£æ–‡ç©ºzhref="/zhref="zsrc="/zsrc=")r   r   Úpub_dateÚ	site_nameÚcontentÚsummaryu     å…± u
    æ�¡æœ‰æ•ˆÚrongcheng_gggs)!Úplaywright.async_apir   ÚchromiumÚlaunchÚnew_contextÚUAÚnew_pageÚgotoÚLIST_URLÚwait_for_timeoutÚprintÚstatusÚ	ExceptionÚstrÚcloseÚsetÚrangeÚevaluateÚBASEÚ
startswithÚaddÚappendÚlenÚ	enumerater"   ÚreÚsearchÚgroupÚstripÚfindÚsubÚ	SITE_NAMEr   )Úpagesr   ÚpÚbrowserÚctxÚpageÚrespÚeÚ	items_allÚseenÚpgÚrowsÚnew_rowsÚrr   ÚrecordsÚidxÚitÚhtmlr   Úmr    Údmr"   ÚsiÚeiÚsegÚsi2s                               ú)/root/gov_crawler/crawl_rongcheng_gggs.pyÚ	run_asyncr[      sŸ  è ø€ Ý5ÙÓ!÷ sð s QØŸ
™
×)Ñ)ØØ\Únð *ó 
÷ 
ˆð
 ×'Ñ'´2¸gØ;?È3Ñ1OÐ]lð (ó n÷ nˆà—\‘\“^×#ˆð	ØŸ™¤8Ð8JÐTY˜ÓZ×ZˆDØ×'Ñ'¨Ó-×-Ð-ÜÐ$±D T§[¢[¸cÐ$BÐCÔDð ˆ	Ü‹uˆÜ˜˜5 1™9Ó%ó '	ˆBØ�AŠvðØŸ-™-¨+´d°VÐ;UÐVXÐUYÐYZÐ([Ó\×\Ð\Ø×/Ñ/°Ó5×5Ð5ð Ÿ™ð (ó ÷ ˆDð* ˆHØò "�Ø#$ V¡9×#7Ñ#7¸Ô#?�a˜’iÄTÈAÈfÉIÑEU�Ø˜d’?Ø—H‘H˜S”MØ×$Ñ$¨S¸1¸W¹:ÈqÐQWÉyÑ%YÔZØ ‘M‘Hð"ô �E˜"˜˜\¬#¨d«)¨°MÀ(ÀÈ9ÔUXÐYbÓUcÐTdÐdeÐfÔgÜ�4‹y˜2‹~ÜÐ,Ô-ÙðO'	ðT ˆÜ  Ó+ó 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Ø!Ÿ\™\›^×+�ð
 �w‘KˆEÜ—	‘	ÐLÈdÓSˆAÙ�Q—W‘W˜Q“Z×%Ñ%Ô'ØŸ™ ›
×(Ñ(Ó*�à˜&‘zˆHÜ—	‘	ÐGÈÓNˆAÙÜ—Y‘YÐ3°Q·W±W¸Q³ZÓ@�ÙØ!Ÿx™x›z�HàˆGØ—‘Ð7Ó8ˆBØ—‘Ð5Ó6ˆBØ�AŠv˜"˜rš'Ø˜r¤CÐ(DÓ$EÑEÀbÐI×OÑOÓQ�Ùä—I‘IÐZÐ\`Óa�ÙØŸ'™' !›*�CØŸ(™(Ð#BÓC�CØ˜Q’wØ"% c d )§/¡/Ó"3˜Ø—=‘=”?ÜÐ,Ô-Ùä—f‘f˜Z¨´D©¸3Ñ)>ÀÓHˆGÜ—f‘f˜Y¨´$©¸Ñ(<¸gÓFˆGØ�N‰NØØ˜%‘yØ$Ü&Ø"Øñö ðS0	ðb �m‰m‹o×Ð÷gs÷ sôj 
ˆF”3�w“<�. 
Ð
+Ô,ÙÜ˜Ð"2Ô3Üˆw‹<Ððqsùð
ùð
nùà#ùð [ùØ-úäò 	Ü�M¤# a£&¨¨# , Ð0Ô1Ø—-‘-“/×!Ñ!Û÷%s÷ sñ sûð	úð ]ùØ5úÜ ò Ü˜M¨"¨¨R´°A³°t¸°¨~Ð>Ô?ÞûðúðùðL `ùØ1ùØ+úÜò ÜÐ)¬#¨a«&°°#¨,¨Ð8Ô9ÝûðúðV 	ùðgsù÷ s÷ sò süs¹  ‚V/”R/•V/˜$V¼R2½#VÁ R5Á!VÁ8R8Á9VÁ>SÂR;ÂSÂ2R>Â3 SÃ$VÃ8T!ÄTÄT!Ä0TÄ1T!Ä5VÅ	UÅ
4VÅ?A+VÇ+A	VÈ5U"ÉUÉU"É(UÉ)U"Ê UÊU"ÊG$VÑ)VÑ*VÑ.V/Ñ9VÑ:6V/Ò2VÒ5VÒ8VÒ;SÒ>SÓ	TÓ
-TÓ7S:Ó8TÓ=VÔV/ÔTÔV/ÔTÔVÔT!ÔT!Ô!	UÔ*UÕVÕUÕVÕU"ÕU"ÕU"Õ"	VÕ+VÖVÖVÖVÖV/ÖV,ÖV"Ö V,Ö'V/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=)rC   zDone: z records)ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚallrC   r.   rB   ÚasyncioÚrunr[   )rc   Úparserr   rC   Úcnts        rZ   Úmainrm   “   s–   € ÛØ×$Ñ$Ó&€FØ
×Ñ˜	¬°QÐÔ7Ø
×Ñ˜¨ÐÔ5Ø×ÑÓ€DØ—(’(‰B §
¡
€EÜ	ˆBŒyˆk˜  Ð
(Ô)Ü
�+‰+”i eÔ,Ó
-€CÜ	ˆF�3�%�xÐ
 Ô!Øó    Ú__main__)r]   )Ú__doc__ÚsysÚosr<   ri   ÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   r6   rB   r,   r)   r[   rm   Ú__name__Úexit© rn   rZ   ú<module>r|      sˆ   ðñ	÷ × Ø ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (à$€Ø$€	ØˆVÐ8Ð9€Øv€ózòz
ð ˆzÒØ€C‡H�H‰T‹VÕð rn   