Ë
    jU†j   ã                   óÚ   — 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ddlZddlmZ ddl	m
Z
 ddlmZ dZedz   ZdZd	Zd
ZdZd\  ZZdZh d£Zh d£Zh d£Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uü  è’²æ±ŸåŽ¿äººæ°‘æ”¿åºœ (www.pujiang.gov.cn) çŽ¯å¢ƒä¿�æŠ¤æ �ç›®çˆ¬è™« â€” ç‘žæ•°WAF
æ �ç›®: c160163 çŽ¯å¢ƒä¿�æŠ¤ (ç©ºæ°”è´¨é‡�æ—¥æŠ¥ç­‰)
åˆ—è¡¨: /pjxrmzf/c160163/nav_list.shtml + nav_list_{N}.shtml (æ¯�é¡µ18æ�¡)
è¯¦æƒ…: /pjxrmzf/c160163/{YYYY-MM}/{DD}/content_{hash}.shtml
è¿‡ç›¾: playwright + host-resolver-rules(IP) + å��æ£€æµ‹; ç‘žæ•°JSåŠ¨æ€�cookie
æ³¨æ„�: å››å·�è’²æ±ŸåŽ¿ (areaCode 510131), ä¸Žæµ™æ±Ÿæµ¦æ±Ÿ pj.gov.cn æ— å…³
ç”¨æ³•: python3 crawl_pujiang_hjbh.py [--pages 5] [--out /tmp/pujiang_hjbh.jsonl]
é    N)Údatetime)ÚBeautifulSoup)Úsync_playwrightzhttp://www.pujiang.gov.cnz/pjxrmzf/c160163/nav_list.shtmlz171.221.172.137u   è’²æ±ŸåŽ¿-çŽ¯å¢ƒä¿�æŠ¤u   å››å·�zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36)ç      ð?gÍÌÌÌÌÌü?é   >   ÚaÚbÚpÚbrÚemÚh1Úh2Úh3ÚliÚolÚtdÚthÚtrÚulÚimgÚtableÚtbodyÚtheadÚstrong>   ÚdivÚfontÚspanÚlabel>	   ÚnavÚformÚinputÚstyleÚbuttonÚfooterÚheaderÚiframeÚscriptc                 ó>  — | syt        j                  dd| t         j                  ¬«      } t        | d«      }|j	                  d«      D �]H  }|j
                  t        v r|j                  «        Œ'|j
                  dk(  r„|j                  d«      xs |j                  d«      xs d}|rI|j                  d	«      r	t        |z   }|j                  d
«      }||d<   d|_        |j                  |«       n|j                  «        Œº|j
                  d
k(  rU|j                  d«      xs d}|j                  d	«      rt        |z   |d<   n"|r |j                  d«      st        d	z   |z   |d<   |j
                  t        v r|j                  «        �ŒBi |_        �ŒK t#        |«      S )u(   ä¿�ç•™æ®µè�½/è¡¨æ ¼/é“¾æŽ¥, æ¸…ç�†å™ªå£°Ú z
<!--.*?-->)Úflagsúhtml.parserTr   Úsrczdata-srcú/r   Úhrefu   æŸ¥çœ‹å›¾ç‰‡Úhttp)ÚreÚsubÚSr   Úfind_allÚnameÚDROPÚ	decomposeÚgetÚ
startswithÚBASEÚnew_tagÚstringÚreplace_withÚUNWRAPÚunwrapÚattrsÚstr)ÚhtmlÚsoupÚtagr,   r   r.   s         ú'/root/gov_crawler/crawl_pujiang_hjbh.pyÚ
clean_htmlrE      sV  € áØÜ�6‰6�-  T´·±Ô6€DÜ˜˜}Ó-€DØ�}‰}˜TÓ"ó ˆØ�8‰8”tÑØ�M‰MŒOØØ�8‰8�uÒØ—'‘'˜%“.Ò= C§G¡G¨JÓ$7Ò=¸2ˆCÙØ—>‘> #Ô&Ü ™*�CØ—L‘L Ó%�Ø��&‘	Ø)�”Ø× Ñ  Õ#à—‘”ØØ�8‰8�sŠ?Ø—7‘7˜6“?Ò( bˆDØ�‰˜sÔ#Ü" T™k��F’Ù˜dŸo™o¨fÔ5Ü" S™j¨4Ñ/��F‘Ø�8‰8”vÑØ�J‰JŽLàˆCŽIð3ô4 ˆt‹9Ðó    c           
      ó0  — g }t        j                  d| t         j                  «      D ]«  }|j                  d«      j	                  «       |j                  d«      j	                  «       t        j
                  dd|j                  d«      «      j	                  «       }}}|j                  d«      r	t        |z   }|sŒ’d|v sŒ—|j                  |||d	œ«       Œ­ t        «       g }}|D ]/  }|d
   |vsŒ|j                  |d
   «       |j                  |«       Œ1 |S )u+   åˆ—è¡¨: li > span(æ—¥æœŸ) + a[href](æ ‡é¢˜)zL<li[^>]*>\s*<span[^>]*>([^<]*)</span>\s*<a[^>]+href="([^"]+)"[^>]*>(.*?)</a>é   é   ú<[^>]+>r)   é   r-   Úcontent_)ÚtitleÚurlÚdaterN   )r0   Úfinditerr2   ÚgroupÚstripr1   r8   r9   ÚappendÚsetÚadd)	rA   ÚitemsÚmrO   r.   rM   ÚseenÚoutÚits	            rD   Ú
parse_listr[   A   sý   € à€EÜ�[‰[ÐhÐjnÔpr×ptÑptÓuò FˆØŸG™G A›J×,Ñ,Ó.°·±¸³
×0@Ñ0@Ó0BÄBÇFÁFÈ:ÐWYÐ[\×[bÑ[bÐcdÓ[eÓDf×DlÑDlÓDn�EˆdˆØ�?‰?˜3ÔÜ˜$‘;ˆDÚ�Z 4Ò'Ø�L‰L 5°¸tÑDÕEðFô “�rˆ#€DØò ˆØˆe‰9˜DÒ Ø�H‰H�R˜‘YÔØ�J‰J�r�Nðð €JrF   c                 ó,  — d}t        j                  d| t         j                  «      }|r4t        j                  dd|j	                  d«      «      j                  «       }d}t        j                  d| «      }|r|j	                  d«      j                  «       }d}t        j                  d| «      }|r|j	                  d«      j                  «       }d}t        | d«      }|j                  dd	¬
«      }|rt        t        |«      «      }g }t        j                  d|«      D ]l  }	|	j	                  d«      |	j	                  d«      j                  «       }}
t        j                  d|
t         j                  «      sŒY|j                  ||
dœ«       Œn |||||dœS )uH   è¯¦æƒ…: h1.data-title + div.publishedTime + div.source + div#NewsContentr)   z4<h1[^>]*class="[^"]*data-title[^"]*"[^>]*>(.*?)</h1>rJ   rH   u0   class="[^"]*publishedTime[^"]*">æ—¥æœŸï¼š([^<]+)u)   class="[^"]*source[^"]*">æ�¥æº�ï¼š([^<]+)r+   r   ÚNewsContent)Úidz,<a[^>]+href="([^"]+)"[^>]*>([^<]{1,100})</a>rI   z.\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|et)(\?|$))ÚfileNameÚfileUrl)rM   rO   ÚsourceÚbodyÚattachments)r0   Úsearchr2   r1   rQ   rR   r   ÚfindrE   r@   rP   ÚIrS   )rA   rM   rW   rO   ra   rb   rB   Úncrc   ÚamÚahÚats               rD   Úparse_detailrk   R   sY  € à€EÜ
�	‰	ÐIÈ4ÔQS×QUÑQUÓV€AÙÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆØ€DÜ
�	‰	ÐEÀtÓL€AÙØ�w‰w�q‹z×ÑÓ!ˆØ€FÜ
�	‰	Ð>ÀÓE€AÙØ—‘˜“×!Ñ!Ó#ˆØ€DÜ˜˜}Ó-€DØ	�‰�5˜]ˆÓ	+€BÙ	Üœ#˜b›'Ó"ˆà€KÜ�k‰kÐIÈ4ÓPò @ˆØ—‘˜!“˜bŸh™h q›k×/Ñ/Ó1ˆBˆÜ�9‰9ÐFÈÌBÏDÉDÕQØ×Ñ¨B¸2Ñ>Õ?ð@ð  D°FÀDÐYdÑeÐerF   c                  óV
  — t        j                  «       } | j                  dt        dd¬«       | j                  dd¬«       | j	                  «       }t        «       }t        j                  j                  |j                  «      rDt        |j                  d¬	«      D ]*  }	 |j                  t        j                  |«      d
   «       Œ, t        dt!        |«      › d�d¬«       t#        «       5 }|j$                  j'                  ddddt(        › dt(        › �g¬«      }|j+                  t,        ddddœddi¬«      }|j/                  «       }g }t1        d|j2                  dz   «      D �]  }	|	dk(  rt4        nt4        j7                  dd|	› d�«      }
	 |j9                  |
dd ¬!«       d"}t1        d#«      D ]<  }t;        j<                  d$«       |j?                  «       }d%|vsŒ-t!        |«      d&kD  sŒ< n tA        |«      }|D �cg c]  }|d'   |vsŒ|‘Œ }}|jC                  |«       t        d(|	› d)t!        |«      › d*t!        |«      › d+�d¬«       t;        j<                  tE        jF                  d,d-«      «       �Œ t        d.t!        |«      › d/�d¬«       t        |j                  d0d¬	«      }d1x}}|D �]â  }|d'   |v rŒ	 |j9                  |d'   dd ¬!«       d"}t1        d2«      D ]8  }t;        j<                  d-«       	 |j?                  «       }t!        |«      d3kD  r nŒ: tI        |«      }|d4   rt!        |d4   «      d#k  r5|dz  }|tJ        k\  rt        d5d¬«        �n;t        d6|d'   d7d  › �d¬«       nd1}|d8   xs |d8   |d9   xs |d9   |d4   |d'   |d'   tL        tO        jP                  d:d;|d4   «      jS                  «       d d< d1|d=   |d=   |d>   tU        jV                  «       jY                  d?«      d@œ}|j[                  t        j\                  |dA¬B«      dCz   «       |j_                  «        |j                  |d'   «       |dz  }|dDz  d1k(  rt        dE|› dF�d¬«       t;        j<                  tE        jF                  t`        tb        «      «       �Œå |je                  «        |je                  «        d d d «       t        dG› dH|j                  › �d¬«       y # t        $ r Y �ŒKw xY w# t        $ r Y �ŒTw xY wc c}w # t        $ r Y �Œ9w xY w# t        $ r Y �Œ<w xY w# 1 sw Y   ŒlxY w)INz--pagesé   u   å‰�Né¡µ)ÚtypeÚdefaultÚhelpz--outz/tmp/pujiang_hjbh.jsonl)ro   zutf-8)ÚencodingÚpage_urlu   [*] å·²æœ‰ u    æ�¡, æ–­ç‚¹ç»­ä¼ T)Úflushz---disable-blink-features=AutomationControlledz--no-sandboxz---host-resolver-rules=MAP www.pujiang.gov.cn z, MAP pujiang.gov.cn )ÚheadlessÚargszzh-CNi€  i8  )ÚwidthÚheightzAccept-Languagezzh-CN,zh;q=0.9)Ú
user_agentÚlocaleÚviewportÚextra_http_headersrH   znav_list.shtmlÚ	nav_list_z.shtmli'  Údomcontentloaded)ÚtimeoutÚ
wait_untilr)   é
   rI   Ú_tsiˆ  rN   z[list] pz: u    æ�¡(æ–°ú)r   g      ø?u   [*] åˆ—è¡¨å…± u    æ�¡, å¼€å§‹æŠ“è¯¦æƒ…r   r   é   i¸  rb   u   [!] ç©ºæ­£æ–‡è¿‡å¤š, ä¸­æ­¢u   [warn] ç©ºæ­£æ–‡ iÎÿÿÿrM   rO   rJ   ú éÈ   ra   rc   z%Y-%m-%d %H:%M:%S)rM   Úpublish_dateÚcontentrr   Ú
source_urlÚ	site_nameÚsummaryÚ	date_rankÚauthorÚcontent_sourcerc   Ú
crawl_timeF)Úensure_asciiú
é   z
[detail] +u    æ�¡u   [âœ“] å®Œæˆ�: æœ¬æ¬¡æ–°å¢ž u    æ�¡ -> )3ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsrT   ÚosÚpathÚexistsrY   ÚopenrU   ÚjsonÚloadsÚ	ExceptionÚprintÚlenr   ÚchromiumÚlaunchÚIPÚnew_contextÚUAÚnew_pageÚrangeÚpagesÚLIST_URLÚreplaceÚgotoÚtimeÚsleepr‡   r[   ÚextendÚrandomÚuniformrk   ÚMAX_FAILÚ	SITE_NAMEr0   r1   rR   r   ÚnowÚstrftimeÚwriteÚdumpsrs   Ú	SLEEP_MINÚ	SLEEP_MAXÚclose)Úapru   Ú	done_urlsÚliner
   ÚbrowserÚctxÚpageÚ	all_itemsÚpnorN   rA   ÚirV   rZ   Ú	new_itemsÚfÚokÚfailÚ_rÚdetÚrecs                         rD   ÚmainrÉ   n   s  € Ü	×	 Ñ	 Ó	"€BØ‡O�O�I¤C°¸€OÔCØ‡O�O�GÐ%>€OÔ?Ø�=‰=‹?€Dä“€IÜ	‡w�w‡~�~�d—h‘hÔÜ˜Ÿ™¨GÔ4ò 	ˆDðØ—‘œdŸj™j¨Ó.¨zÑ:Õ;ð	ô
 
ˆKœ˜I›Ð'Ð'9Ð
:À$ÕGä	Ó	ð R˜aØ—*‘*×#Ñ#¨TØ;¸^Ø;¼B¸4Ð?TÔUWÐTXÐYð9
Ð#ó ˆð ×!Ñ!Ü 'Ø#¨tÑ4Ø 1Ð3CÐDð "ó 
ˆð
 �|‰|‹~ˆð ˆ	Ü˜˜DŸJ™J¨™NÓ+ó 	1ˆCØ! Qšh•(¬H×,<Ñ,<Ð=MÐQZÐ[^ÐZ_Ð_eÐOfÓ,gˆCðØ—	‘	˜# uÐ9K�	ÔLð ˆDÜ˜2“Yò �Ü—
‘
˜1”Ø—|‘|“~�Ø Ò$¬¨T«°TÓ)9Ùð	ô
 ˜tÓ$ˆEØ&+ÖJ ¨r°%©yÀ	Ò/IšÐJˆIÐJØ×Ñ˜UÔ#Ü�H˜S˜E ¤C¨£J <¨x¼¸I»Ð7GÀqÐIÐQUÕVÜ�J‰J”v—~‘~ c¨3Ó/Ö0ð!	1ô$ 	�œs 9›~Ð.Ð.CÐDÈDÕQÜ�—‘˜3¨Ô1ˆØˆˆˆTØó -	=ˆBØ�%‰y˜IÑ%ØðØ—	‘	˜"˜U™)¨UÐ?Q�	ÔRð ˆDÜ˜A“hò �Ü—
‘
˜3”ðØŸ<™<›>�DÜ˜4“y 4Ò'Ùð (ð	ô ˜tÓ$ˆCØ�v’;¤# c¨&¡kÓ"2°RÒ"7Ø˜‘	�Øœ8Ò#ÜÐ7¸tÕDÚÜÐ)¨"¨U©)°C°D¨/Ð):Ð;À4ÖHà�à˜W™Ò4¨¨G©Ø # F¡Ò 9¨r°&©zØ˜v™;Ø˜u™IØ  ™iÜ&ÜŸ6™6 *¨c°3°v±;Ó?×EÑEÓGÈÈÐMØØ˜h™-Ø"% h¡-Ø" =Ñ1Ü&Ÿl™l›n×5Ñ5Ð6IÓJñˆCð �G‰G”D—J‘J˜s°Ô7¸$Ñ>Ô?Ø�G‰GŒIØ�M‰M˜"˜U™)Ô$Ø�!‰GˆBØ�B‰w˜!Š|Ü˜
 2 $ dÐ+°4Õ8Ü�J‰J”v—~‘~¤i´Ó;Ö<ð[-	=ð\ 	
�‰Œ	Ø�‰Œ÷eRôf 
Ð'¨ t¨8°D·H±H°:Ð
>ÀdÖKøôo ò Úðûô, ò Úðüò Køô ò Úðûô !ò Úðú÷cRð Rús«   Â'SÃ,B!TÆS*Æ"9TÇTÇ+TÇ=S:È
S:ÈB,TÊ;S?Ë%TË8TÌFTÓ	S'Ó&S'Ó*	S7Ó3TÓ6S7Ó7TÓ?	TÔTÔTÔTÔ	T	ÔTÔT	ÔTÔT(Ú__main__)Ú__doc__r’   r›   r—   r0   Úsysr«   r®   r   Úbs4r   Úplaywright.sync_apir   r9   r¨   r¢   r±   ÚGROUPr¤   r¶   r·   r°   ÚKEEPr=   r5   rE   r[   rk   rÉ   Ú__name__© rF   rD   ú<module>rÓ      s“   ðñ÷ 1× 0× 0Ó 0Ý Ý Ý /à"€ØÐ3Ñ3€Ø€Ø$€	Ø€Øv€ØÑ €	ˆ9Ø€ò E€Ú	)€ÚZ€ò òFò"fò8bLðJ ˆzÒÙ…Fð rF   