Ë
    ¸¬ujI#  ã                   ó¶   — 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 ddlZ ej                  «        dZ
dZdZdZdd	d
ddœZd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uŠ   
èˆ’åŸŽåŽ¿äººæ°‘æ”¿åºœ - å…¬ç¤ºå…¬å‘Šçˆ¬è™«
https://www.shucheng.gov.cn/zwzx/gsgg/index.html
CMS: é¾™è®¯ç§‘æŠ€ (Lonsun) - HTML pagination
é    N)ÚBeautifulSoupzhttps://www.shucheng.gov.cnz/zwzx/gsgg/index.htmlz?https://www.shucheng.gov.cn/content/column/6788901?pageIndex={}é   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36zUtext/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8z
keep-alive)z
User-AgentÚAcceptzAccept-LanguageÚ
Connectionc                 ó¤  — 	 t        j                  | t        dd¬«      }d|_        |j                  dk7  rg dfS t        |j                  d	«      }g }|j                  d
t        j                  d«      ¬«      }|sg dfS |j                  dd¬«      D �]  }|j                  dd¬«      }|sŒ|j                  dd«      }|j                  dd«      }	|j                  d«      }
|	xs& |
r|
j                  d¬«      n|j                  d¬«      }|j                  dd¬«      }|r|j                  d¬«      nd}|rt!        |«      dk  rŒ³|j#                  d«      r|}n'|j#                  d«      r
t$        |z   }nt$        dz   |z   }|j'                  |||dœ«       �Œ |dfS # t        $ r,}t        d|› �t        j                  ¬«       g dfcY d}~S d}~ww xY w)z&Parse list page HTML, return articles.é   F©ÚheadersÚtimeoutÚverifyúutf-8z[ERROR] ©ÚfileNéÈ   úhtml.parserÚulÚdoc_list©Úclass_Úli)Ú	recursiveÚaT©Úhrefr   Ú ÚtitleÚspan©ÚstripÚdater   Úhttpú/)r   Úurlr    )ÚrequestsÚgetÚHEADERSÚencodingÚ	ExceptionÚprintÚsysÚstderrÚstatus_coder   ÚtextÚfindÚreÚcompileÚfind_allÚget_textÚlenÚ
startswithÚBASEÚappend)r#   ÚrespÚeÚsoupÚarticlesr   r   Úa_tagr   Ú
title_attrÚlink_text_spanr   Ú	date_spanÚ	date_textÚfull_urls                  ú#/root/gov_crawler/crawl_shucheng.pyÚcrawl_list_htmlrB      sÈ  € ðÜ�|‰|˜C¬¸"ÀUÔKˆØˆŒð
 ×Ñ˜3ÒØ�5ˆyÐä˜Ÿ™ MÓ2€DØ€HØ	�‰�4¤§
¡
¨;Ó 7ˆÓ	8€BÙØ�5ˆyÐà�k‰k˜$¨%ˆkÓ0ó NˆØ—‘˜ $�Ó'ˆÙØØ�y‰y˜ Ó$ˆØ—Y‘Y˜w¨Ó+ˆ
ØŸ™ FÓ+ˆØÒuÁn˜~×6Ñ6¸TÐ6ÔBÐZ_×ZhÑZhÐosÐZhÓZtˆð —G‘G˜F¨6�GÓ2ˆ	Ù6?�I×&Ñ&¨TÐ&Ô2ÀRˆ	áœ˜E›
 QšØà�?‰?˜6Ô"Ø‰HØ�_‰_˜SÔ!Ü˜d‘{‰Hä˜c‘z DÑ(ˆHà�‰ %°À)ÑLÖMð/Nð2 �Tˆ>ÐøôM ò Ü�˜˜ˆn¤3§:¡:Õ.Ø�5ˆyÕûðús   ‚$F Æ	GÆ#!G
ÇGÇ
Gc                 óŠ  — g }t        d| dz   «      D ]®  }|dk(  rt        t        z   }nt        j	                  |«      }t        d|› d|› �t        j                  ¬«       t        |«      \  }}t        dt        |«      › d�t        j                  ¬«       |r|s |S |j                  |«       t        j                  d«       Œ° |S )zCrawl multiple pages.é   z[LIST] Page z: r   z  Found z	 articles)Úranger5   Ú	PAGE1_URLÚPAGINATION_TPLÚformatr)   r*   r+   rB   r3   ÚextendÚtimeÚsleep)Ú	max_pagesÚall_articlesÚpager#   r:   Úoks         rA   Úcrawl_list_allrP   F   s¹   € à€LÜ�a˜ Q™Ó'ò ˆØ�1Š9ÜœÑ"‰Cä ×'Ñ'¨Ó-ˆCä�˜T˜F " S EÐ*´·±Õ<Ü& sÓ+‰ˆ�"Ü�œ˜X›˜ yÐ1¼¿
¹
ÕCÙ™Øð Ðð 	×Ñ˜HÔ%Ü�
‰
�1�ðð Ðó    c                 óÞ  ‡— | d   }t        d| d   d d › d�t        j                  ¬«       	 t        j                  |t
        dd¬	«      }d
|_        |j                  dk7  r+d| d   › d|› d�| d<   g | d<   | j	                  dd«      | d<   | S t        |j                  d«      }|j                  dd¬«      }|r|j                  d¬«      | d<   d}|j                  dddi¬«      }|r'|j	                  d«      r|d   j                  «       d d }|s_|j                  dt        j                  d «      ¬!«      }|r7t        j                   d"|j                  «       «      }	|	r|	j#                  d#«      }|s| j	                  dd«      }|| d<   |j                  d$d%¬&«      }
|
s&|j                  d$t        j                  d'«      ¬«      }
|
sd| d   › d|› d�| d<   g | d<   | S g }|
j%                  d(t        j                  d)t        j&                  «      ¬*«      D ]«  }|j	                  d+d«      Š‰j)                  d,«      r	t*        ‰z   Š‰j)                  d-«      st*        d,z   ‰j-                  d,«      z   Š|j                  d¬«      xs ‰j/                  d,«      d.   }t1        ˆfd/„|D «       «      rŒ˜|j3                  |‰d0œ«       Œ­ |
j%                  d(t        j                  d1«      ¬*«      D ]Ø  }|j	                  d+d«      Š‰j)                  d,«      r	t*        ‰z   Š‰j)                  d-«      st*        d,z   ‰j-                  d,«      z   Šd2‰v r"‰j/                  d2«      d.   j5                  «       nd}|d3v sŒˆ|j                  d¬«      xs ‰j/                  d,«      d.   }t1        ˆfd4„|D «       «      rŒÅ|j3                  |‰d0œ«       ŒÚ |
j%                  d(«      D ]Ó  }|j	                  d+d«      Št7        t        j                   d)‰t        j&                  «      «      xs d5‰v }|sŒL‰j)                  d,«      r	t*        ‰z   Š‰j)                  d-«      st*        d,z   ‰j-                  d,«      z   Š|j                  d¬«      xs ‰j/                  d,«      d.   }d|› d‰› d�}|j9                  |«       ŒÕ g }|
j:                  D �]®  }|j<                  d6k(  r|j3                  t?        |«      «       Œ.|j<                  d7k(  r?|j                  dd¬8«      }|sŒSt        j@                  d9|«      rŒj|j3                  |«       Œ||j<                  d$k(  rí|j                  d6«      }|rr|j3                  t?        |«      «       |j:                  D ]G  }|j<                  d6k7  sŒtC        |t>        «      sŒ$|j                  «       }|sŒ7|j3                  |«       ŒI �Œ|j                  dd¬8«      }|s�Œ't        j@                  d:|«      r�Œ?|j	                  d;g «      }t1        d<„ |D «       «      r�Œe|j3                  |«       �ŒxtC        |t>        «      s�ŒŠ|j                  «       }|s�Œž|j3                  |«       �Œ± |rd=jE                  |«      nd}tG        |j                  «       «      d>k  rd| d   › d|› d�}|| d<   || d<   | S # t        $ r5}d| d   › d|› d�| d<   g | d<   | j	                  dd«      | d<   | cY d }~S d }~ww xY w)?Nr#   z	[DETAIL] r   é(   z...r   r   Fr	   r   ú[z](ú)ÚcontentÚattachmentsr    r   Údate_pubr   r   Úh1Ú	newstitler   Tr   ÚmetaÚnameÚPubDate)Úattrsé
   r   u   å�‘å¸ƒæ—¥æœŸ)Ústringz(\d{4}[-/]\d{2}[-/]\d{2})rD   ÚdivÚzoom)Úidzj-fontContent|newscontnetr   z5\.(doc|pdf|docx|xls|xlsx|rar|zip|xlsm|ppt|pptx)(\?|$)r   r   r"   r!   éÿÿÿÿc              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­w©r#   N© ©Ú.0r   Úahrefs     €rA   ú	<genexpr>zcrawl_detail.<locals>.<genexpr>•   s   øè ø€ Ò:¨�1�U‘8˜uÕ$Ñ:ùó   ƒ)r\   r#   z	/group\d/ú.)ÚdocÚpdfÚdocxÚxlsÚxlsxÚrarÚzipÚxlsmÚpptÚpptxÚjpgÚpngÚgifÚjpegc              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­wrf   rg   rh   s     €rA   rk   zcrawl_detail.<locals>.<genexpr>£   s   øè ø€ Ò>¨Q�q˜‘x 5Õ(Ñ>ùrl   z/groupÚtableÚp)Ú	separatorr   u/   ^(è´£ä»»ç¼–è¾‘|åˆ�å®¡|å¤�å®¡|ç»ˆå®¡|\[çº é”™\])u6   ^(è´£ä»»ç¼–è¾‘|åˆ�å®¡|å¤�å®¡|ç»ˆå®¡|\[çº é”™\]|æ ‡ç­¾)Úclassc              3   ó,   K  — | ]  }d |xs dv –— Œ y­w)Úclearr   Nrg   )ri   Úcs     rA   rk   zcrawl_detail.<locals>.<genexpr>Í   s   è ø€ ÒE¸˜w¨1ª7°Ô3ÑEùs   ‚z

é   )$r)   r*   r+   r$   r%   r&   r'   r(   r,   r   r-   r.   r2   r   r/   r0   ÚsearchÚgroupr1   ÚIr4   r5   ÚlstripÚsplitÚanyr6   ÚlowerÚboolÚreplace_withÚchildrenr\   ÚstrÚmatchÚ
isinstanceÚjoinr3   )Úarticler#   r7   r8   r9   rY   Úpub_dater[   r   ÚmÚcontent_divrW   r;   ÚatextÚextÚ	is_attachÚmd_linkÚpartsÚchildr-   Úinner_tableÚsiblingÚtÚclassesÚcontent_textrj   s                            @rA   Úcrawl_detailr¢   Z   s‡  ø€ Ø
�%‰.€CÜ	ˆI�g˜gÑ& s¨Ð+Ð,¨CÐ
0´s·z±zÕBðÜ�|‰|˜C¬¸"ÀUÔKˆØˆŒð ×Ñ˜3ÒØ  ¨Ñ!1Ð 2°"°S°E¸Ð;ˆ�	ÑØ!#ˆ�ÑØ%Ÿk™k¨&°"Ó5ˆ�
ÑØˆä˜Ÿ™ MÓ2€Dð 
�‰�4 ˆÓ	,€BÙ	ØŸ;™;¨T˜;Ó2ˆ�Ñð €HØ�9‰9�V F¨IÐ#6ˆ9Ó7€DÙ�—‘˜Ô#Ø˜	‘?×(Ñ(Ó*¨3¨BÐ/ˆÙØ�y‰y˜¬¯
©
°?Ó(CˆyÓDˆÙÜ—	‘	Ð6¸¿¹»ÓHˆAÙØŸ7™7 1›:�ÙØ—;‘;˜v rÓ*ˆØ"€GˆJÑð —)‘)˜E f�)Ó-€KÙØ—i‘i ¬b¯j©jÐ9UÓ.V�iÓWˆÙØ  ¨Ñ!1Ð 2°"°S°E¸Ð;ˆ�	ÑØ!#ˆ�ÑØˆð €KØ×%Ñ% c´·
±
Ð;sÔuw×uyÑuyÓ0zÐ%Ó{ò >ˆØ—	‘	˜& "Ó%ˆØ×Ñ˜CÔ Ü˜5‘LˆEØ×Ñ Ô'Ü˜3‘J §¡¨cÓ!2Ñ2ˆEØ—‘ T�Ó*ÒB¨e¯k©k¸#Ó.>¸rÑ.BˆÜÓ:¨kÔ:Õ:Ø×Ñ¨°eÑ<Õ=ð>ð ×%Ñ% c´·
±
¸<Ó0HÐ%ÓIò BˆØ—	‘	˜& "Ó%ˆØ×Ñ˜CÔ Ü˜5‘LˆEØ×Ñ Ô'Ü˜3‘J §¡¨cÓ!2Ñ2ˆEà.1°U©lˆe�k‰k˜#Ó˜rÑ"×(Ñ(Ô*ÀˆØÐlÒlØ—N‘N¨�NÓ.ÒF°%·+±+¸cÓ2BÀ2Ñ2FˆEÜÓ>°+Ô>Õ>Ø×"Ñ"¨E¸%Ñ#@ÕAðBð ×%Ñ% cÓ*ò 
(ˆØ—	‘	˜& "Ó%ˆÜœŸ™Ð#[Ð]bÔdf×dhÑdhÓiÓjÒÐnvÐzÐnˆ	ÚØ×Ñ Ô$Ü˜u™�Ø×#Ñ# FÔ+Ü˜s™
 U§\¡\°#Ó%6Ñ6�Ø—N‘N¨�NÓ.ÒF°%·+±+¸cÓ2BÀ2Ñ2FˆEØ˜%˜  5 '¨Ð+ˆGØ×Ñ˜wÕ'ð
(ð €EØ×%Ñ%ó #ˆØ�:‰:˜Ò à�L‰Lœ˜U›Õ$Ø�Z‰Z˜3ÒØ—>‘>¨B°d�>Ó;ˆDÚœBŸH™HÐ%WÐY]Õ^Ø—‘˜TÕ"Ø�Z‰Z˜5Ò àŸ*™* WÓ-ˆKÙà—‘œS Ó-Ô.à$Ÿ~™~ò ,�GØ—|‘| wÓ.´:¸gÄsÕ3KØ#ŸM™M›O˜ÚØ!ŸL™L¨�Oò	,ð —~‘~°¸$�~Ó?�Û¤§¡Ð)bÐdhÖ iØ#Ÿi™i¨°Ó4�GÜÑE¸WÔEÖEØŸ™ TÖ*Ü˜œsÖ#Ø—;‘;“=ˆDÛØ—‘˜TÖ"ð;#ñ> */�6—;‘;˜uÔ%°B€Lô ˆ<×ÑÓÓ  2Ò%Ø˜7 7Ñ+Ð,¨B¨s¨e°1Ð5ˆà%€GˆIÑØ(€GˆMÑØ€Nøôw ò Ø  ¨Ñ!1Ð 2°"°S°E¸Ð;ˆ�	ÑØ!#ˆ�ÑØ%Ÿk™k¨&°"Ó5ˆ�
ÑØ�ûð	ús   ­$Z. Ú.	[,Ú7*['Û![,Û'[,c                  óð  — t         } t        t        j                  «      dkD  rt        j                  d   dk(  rd} t	        | «      }t        dt        |«      › �t        j                  ¬«       |st        d«       y t        |«      D ]S  \  }}t        d|dz   › dt        |«      › d�t        j                  ¬«       t        |«      }t        j                  d	«       ŒU |D �cg c]j  }|j                  d
d«      |j                  dd«      |j                  d|j                  dd«      «      |j                  dd«      |j                  dg «      dœ‘Œl }}t        t        j                  |dd¬«      «       y c c}w )NrD   z--incrementalz[LIST] Total: r   z[]rT   r"   z] Crawling detail...g      à?r   r   r#   rX   r    rV   rW   )r   r#   r    rV   rW   Fé   )Úensure_asciiÚindent)Ú	MAX_PAGESr3   r*   ÚargvrP   r)   r+   Ú	enumerater¢   rJ   rK   r%   ÚjsonÚdumps)rL   r:   Úir   Úoutputs        rA   Úmainr®   ß   s<  € Ü€IÜ
Œ3�8‰8ƒ}�qÒœSŸX™X a™[¨OÒ;Øˆ	ä˜iÓ(€HÜ	ˆNœ3˜x›=˜/Ð
*´·±Õ<ÙÜˆdŒØä˜(Ó#ò ‰ˆˆ1Ü��!�A‘#��aœ˜H›�Ð&:Ð;Ä#Ç*Á*ÕMÜ˜‹OˆÜ�
‰
�3�ðð öð ð —‘�w˜rÓ"Ø�u‰u�U˜2‹Ø—‘�j !§%¡%¨¨rÓ"2Ó3Ø—5‘5˜ 2Ó&Ø—u‘u˜]¨2Ó.óð €Fð ô 
Œ$�*‰*�V¨%¸Ô
:Õ;ùòs   Ã A/E3Ú__main__)Ú__doc__r*   r/   rª   rJ   r$   Úbs4r   Úurllib3Údisable_warningsr5   rF   rG   r§   r&   rB   rP   r¢   r®   Ú__name__rg   rQ   rA   ú<module>rµ      s~   ðñ÷
 %× $Ó $Ý Û Ø €× Ñ Ô à$€Ø#€	ØR€Ø€	ð DØeØ0Øñ	€ò+ò\ò(BòJ<ð6 ˆzÒÙ…Fð rQ   