Ë
    àÊ‚j[  ã                   óh  — d 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Ze› d	e› d
e› de› �Ze› de› de› d�ZdZdd„Zd„ Zedk(  r ej0                   e«       «       yy)uO  
crawl_huangshan_xzsp.py - é»„å±±å¸‚-è¡Œæ”¿è®¸å�¯æ‰§æ³•å†³å®šä¿¡æ�¯ (organId=6615714, catId=6717937)
ç«™ç‚¹: www.huangshan.gov.cn (ç‘žæ•°4ä»£ + å¸�è�”NWAF å�ŒWAF, ä¸Žæ­™åŽ¿ ahshx å�Œæ¬¾æ¨¡æ�¿)
è¿‡ç›¾: playwright-stealth (å¿…éœ€)
åˆ—è¡¨: label/8888 API (ä¸Ž ahshx å®Œå…¨å�Œæ¬¾):
  labelName=publicInfoList&siteId=6793339&organId=6615714&pageSize=15&pageIndex=N
  &isDate=true&dateFormat=yyyy-MM-dd&length=50&type=4&action=list&isJson=true&catId=6717937
  total=3357, è¯¦æƒ… /zwgk/public/6615714/{contentId}.html
è¯¦æƒ…: meta ArticleTitle/PubDate/ContentSource, æ­£æ–‡ div.wzcon.j-fontContent
é    N)Úpush_to_searchdbzhttps://www.huangshan.gov.cnu(   é»„å±±å¸‚-è¡Œæ”¿è®¸å�¯æ‰§æ³•å†³å®šä¿¡æ�¯Ú6615714Ú6717937Ú6793339zO/huangshanzwgk/zwgk/site/label/8888?_=0.{rand}&labelName=publicInfoList&siteId=z	&organId=z™&pageSize=15&pageIndex={page}&isDate=true&dateFormat=yyyy-MM-dd&length=50&type=4&action=list&result=&isJson=true&keyWords=&isSetValue=true&catIds=&catId=z/zwgk/public/column/z?type=4&catId=z&action=list&nav=3zoMozilla/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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'        |	«      › �«       |
r[d|
j%                  d«      v sd|
j%                  d«      v r5t!        d«       |j)                  «       ƒ d {  –—†  	 d d d «      ƒd {  –—†  yg }t/        «       }d}t1        d| dz   «      D �]X  }t2        j5                  t-        t7        t9        d|› �«      «      «      dd  |¬ «      }|j;                  d!|› d"�«      ƒ d {  –—† }d#|v rt!        d$|d#   › �«        nì|j=                  d%d«      }|j=                  d&g «      xs g }|s nÀt!        d'|› d(t'        |«      › d)|› d*�«       |D ]�  }|j=                  d+d,«      }|sŒ||vsŒ|j?                  |«       |jA                  |jC                  d-«      r|ntD        |z   |j=                  d.d,«      jG                  «       |j=                  d/«      xs d,d d0 d1œ«       Œ’ |d2z  |k\  s�ŒY n t!        d3|› d4t'        |«      › d5�«       g }tI        |«      D �]  \  }}t!        d6|dz   › d7t'        |«      › d8|d.   d d9 › d:�«       	 |j                  |d;   dd<¬«      ƒ d {  –—† }|j                  d=«      ƒ d {  –—†  |j                  «       ƒ d {  –—† }	|d.   }t        j                  d@|	«      }
|
r>|
j%                  d«      jG                  «       r|
j%                  d«      jG                  «       }|dA   }t        j                  dB|	«      }
|
r7t        j                  dC|
j%                  d«      «      }|r|j%                  «       }d,}t        j                  dD|	«      }
|
r|
j%                  d«      jG                  «       }|s3|	jK                  dE«      }|dkD  r|	jK                  dF|«      dz   }|	||dGz    }|jG                  «       st!        dH«       �Œ¹t        jL                  dIdJtD        z   d7z   |«      }t        jL                  dKdLtD        z   d7z   |«      }|jA                  ||d;   |tN        |d,dMœ«       �Œ |j)                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  t!        dNt'        «      › dO�«       |rtQ        |dP«       t'        |«      S 7 �Œ¦7 �Œ�7 �Œ`7 �ŒC7 �Œ.7 �Œ7 �Œú7 �Œå7 �ŒF7 �Œ8# 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 �Œ¨7 �Œ’7 �Œ}# t*        $ r%}t!        d>t-        |«      d d? › �«       Y d }~�Œ#d }~ww xY w7 Œú7 Œì# 1 ƒd {  –—†7  sw Y   ŒüxY w­w)QNr   )Ú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	   è¯·ç¨�å€™ÚEnvironmentu     [WAF] ä»�è¢«æ‹¦æˆªz  [LOAD ERR] éx   Úhs_iñÿÿÿ)ÚrandÚpagezOasync () => {
                try {
                    const r = await fetch('zv');
                    return await r.json();
                } catch(e) { return {error: e.message}; }
            }Úerrorz  [API ERR] ÚtotalÚdatau     ç¬¬u   é¡µ: u    æ�¡ (total=ú)ÚlinkÚ ÚhttpÚtitleÚpublishDateé
   )Úurlr%   Údateé   z  [LIST] total=u   , åŽ»é‡�å�Ž u    æ�¡z  [ú/z] é&   z...r(   i¸ˆ  i   z    [DETAIL ERR] éd   z/<meta\s+name="ArticleTitle"\s+content="([^"]*)"r)   z*<meta\s+name="PubDate"\s+content="([^"]*)"z\d{4}-\d{2}-\d{2}zAclass="wzcon\s+j-fontContent[^"]*"[^>]*>([\s\S]*?)</div>\s*</div>zclass="wzcon j-fontContent"ú>i N  u       [SKIP] æ­£æ–‡ç©ºzhref="/zhref="zsrc="/zsrc=")r%   r(   Úpub_dateÚ	site_nameÚcontentÚsummaryu     å…± u
    æ�¡æœ‰æ•ˆÚhuangshan_xzsp))Úplaywright.async_apir   Úplaywright_stealthr	   ÚchromiumÚlaunchÚnew_contextÚUAÚapply_stealth_asyncÚnew_pageÚgotoÚLIST_URLÚwait_for_timeoutr1   ÚreÚsearchÚprintÚstatusÚgroupÚlenÚcloseÚ	ExceptionÚstrÚsetÚrangeÚAPI_TPLÚformatÚabsÚhashÚevaluateÚgetÚaddÚappendÚ
startswithÚBASEÚstripÚ	enumerateÚfindÚsubÚ	SITE_NAMEr   )Úpagesr   r	   ÚpÚbrowserÚctxÚstealthr   ÚrespÚhtmlÚmÚeÚ	items_allÚseenr   ÚpgÚapi_urlr    ÚitemsÚitr"   ÚrecordsÚidxr%   r/   Údmr1   Úidx2Ústarts                                ú)/root/gov_crawler/crawl_huangshan_xzsp.pyÚ	run_asyncrn      sf  è ø€ Ý5Ý*ÙÓ!÷ ið i QØŸ
™
×)Ñ)ØØ\Únð *ó 
÷ 
ˆð
 ×'Ñ'´2¸gØ;?È3Ñ1OÐ]lð (ó n÷ nˆá“)ˆØ×)Ñ)¨#Ó.×.Ð.Ø—\‘\“^×#ˆð	ØŸ™¤8Ð8JÐTY˜ÓZ×ZˆDØ×'Ñ'¨Ó.×.Ð.ØŸ™›×'ˆDÜ—	‘	Ð3°TÓ:ˆAÜÐ$±D T§[¢[¸cÐ$BÀ'Ñ]^È!Ï'É'ÐRSË*ÐUXÐVXÉ/ÐdgÐIhÐhmÔnqÐrvÓnwÐmxÐyÔzÙ�k Q§W¡W¨Q£ZÑ/°=ÀAÇGÁGÈAÃJÑ3NÜÐ,Ô-Ø—m‘m“o×%Ð%Ø÷-i÷ ið ið: ˆ	Ü‹uˆØˆÜ˜˜5 1™9Ó%ó 	ˆBÜ—n‘n¬#¬c´$¸¸R¸D°zÓ2BÓ.CÓ*DÀSÀTÐ*JÐQS�nÓTˆGØŸ™ð ,,à,3¨9ð 5ð(ó ÷ ˆDð ˜$‰Ü˜ T¨'¡] OÐ4Ô5ÙØ—H‘H˜W aÓ(ˆEØ—H‘H˜V RÓ(Ò.¨BˆEÙÙÜ�E˜"˜˜U¤3 u£: ,¨l¸5¸'ÀÐCÔDØò �Ø—v‘v˜f bÓ)�Ú˜D¨Ò,Ø—H‘H˜T”NØ×$Ñ$Ø'+§¡°vÔ'>™tÄDÈ4ÁKØ!#§¡¨°Ó!4×!:Ñ!:Ó!<Ø!#§¡¨Ó!6Ò!<¸"¸c¸rÐ Bñ&õ ð	ð �B‰w˜%ÔÙð5	ô8 	� ˜w l´3°y³>Ð2BÀ$ÐGÔHð ˆÜ  Ó+ó (	‰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Ü—	‘	Ð^Ð`dÓeˆAÙØŸ'™' !›*×*Ñ*Ó,�ÙØ—y‘yÐ!>Ó?�Ø˜!’8Ø ŸI™I c¨4Ó0°1Ñ4�EØ" 5¨¨u©Ð5�GØ—=‘=”?ÜÐ,Ô-ÙÜ—f‘f˜Z¨´D©¸3Ñ)>ÀÓHˆGÜ—f‘f˜Y¨´$©¸Ñ(<¸gÓFˆGØ�N‰NØØ˜%‘yØ$Ü&Ø"Øñö ðC(	ðR �m‰m‹o×Ð÷Si÷ iôV 
ˆF”3�w“<�. 
Ð
+Ô,ÙÜ˜Ð"2Ô3Üˆw‹<Ðð]iùð
ùð
nùð 	/ùØ#ùð [ùØ.ùØ'ùð
 &ùð+iúô. ò 	Ü�M¤# a£&¨¨# , Ð0Ô1Ø—-‘-“/×!Ñ!Û÷5i÷ iñ iûð.	úðùðB `ùØ1ùØ+úÜò ÜÐ)¬#¨a«&°°#¨,¨Ð8Ô9ÝûðúðF 	øðSiø÷ i÷ iñ iüsÄ  ‚ZšW ›Zž$Y9ÁWÁ#Y9Á&WÁ'Y9ÂW	ÂY9ÂWÂY9Â$WÂ?WÃ WÃWÃWÃ0WÃ1B!WÆWÆWÆZÆ#WÆ$ZÆ)A1Y9ÈX8ÈA>Y9ÊY9ÊA>Y9ÌAY9Í9YÎX;ÎYÎ,X>Î-YÏYÏYÏ	F1Y9Õ:Y5Õ;Y9Õ?ZÖ
Y7Ö6Z×Y9×Y9×	Y9×Y9×W×W×W×W×Z×	X5×'-X0ØXØX0ØY9ØZØ)X,Ø*ZØ0X5Ø5Y9Ø;YØ>YÙYÙ	Y2ÙY-Ù'Y9Ù-Y2Ù2Y9Ù7ZÙ9ZÙ?ZÚ ZÚ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éà   z  z pages=)rY   zDone: z records)ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚallrY   rA   rX   ÚasyncioÚrunrn   )rv   Úparserr   rY   Úcnts        rm   Úmainr€   ’   s–   € ÛØ×$Ñ$Ó&€FØ
×Ñ˜	¬°QÐÔ7Ø
×Ñ˜¨ÐÔ5Ø×ÑÓ€DØ—8’8‰C §¡€EÜ	ˆBŒyˆk˜  Ð
(Ô)Ü
�+‰+”i eÔ,Ó
-€CÜ	ˆF�3�%�xÐ
 Ô!Øó    Ú__main__)rp   )Ú__doc__ÚsysÚosr?   r|   ÚjsonÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   rS   rX   ÚORGAN_IDÚCAT_IDÚSITE_IDrJ   r=   r9   rn   r€   Ú__name__Úexit© r�   rm   ú<module>r“      sÒ   ðñ	÷ "× !Ó !Ø ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (à%€Ø6€	Ø€Ø	€Ø
€ØˆVð /Ø/6¨i°yÀÀ
ð^Ø^dÐ]eðg€ð ˆVÐ'¨ z°À¸xÐGYÐZ€àv€óqòh
ð ˆzÒØ€C‡H�H‰T‹VÕð r�   