Ë
    ¸¬ujÌ  ã                   ó´   — 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œZd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uw   
å±±ä¸œæ½�ç„¦æŽ§è‚¡é›†å›¢ - æ–°é—»èµ„è®¯çˆ¬è™«
https://www.sdcoke.com/news/
CMS: è‡ªå®šä¹‰PHP - static HTML pagination
é    N)ÚBeautifulSoupzhttps://www.sdcoke.comz/news/index.htmlz/news/{}.htmlé   z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languagec                 óæ  ‡— 	 t        j                  | t        dd¬«      }d|_        |j                  dk7  rg dfS t        |j                  d«      }g }|j                  dd¬	«      D �]6  }|j                  dd
¬	«      }|sŒ|j                  dd¬«      }|sŒ0|j                  dd«      Š‰j                  d«      r
t        ‰z   Šn,‰j                  d«      st        dz   ‰j                  d«      z   Š|j                  d¬«      }|j                  dd¬	«      }|j                  dd¬	«      }	d}
|rK|	rI|	j                  d¬«      › d|j                  d¬«      › �}
|
j                  dd«      j                  dd«      }
|rt        |«      dk  r�Œ"|j                  |‰|
dœ«       �Œ9 |j                  dd¬	«      D ]ý  }|j                  dd¬	«      }|sŒ|j                  dd¬«      }|sŒ/|j                  dd«      Š‰j                  d«      r
t        ‰z   Šn,‰j                  d«      st        dz   ‰j                  d«      z   Š|j                  d¬«      }|j                  dd¬	«      }|r|j                  d¬«      nd}
|rt        |«      dk  rŒÔt!        ˆfd„|D «       «      rŒé|j                  |‰|
dœ«       Œÿ |j                  dd¬«      }t#        |xr d |j                  «       v «      }||fS #  g dfcY S xY w)!zAParse list page, return articles and whether there's a next page.é   F©ÚheadersÚtimeoutÚverifyúutf-8éÈ   úhtml.parserÚdivzcat-news-list©Úclass_zcat-xw-titleÚaT©Úhrefr   Ú ú/Úhttp©Ústripz
cat-xw-dayzcat-xw-yearú-u   å¹´u   æœˆr   )ÚtitleÚurlÚdatezcat-news-itemzhome-notice-titlezcat-news-timec              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­w©r   N© )Ú.0r   r   s     €ú!/root/gov_crawler/crawl_sdcoke.pyú	<genexpr>zcrawl_list.<locals>.<genexpr>[   s   øè ø€ Ò6¨�1�U‘8˜tÕ#Ñ6ùó   ƒÚpages)Úidu	   ä¸‹ä¸€é¡µ)ÚrequestsÚgetÚHEADERSÚencodingÚstatus_coder   ÚtextÚfind_allÚfindÚ
startswithÚBASEÚlstripÚget_textÚreplaceÚlenÚappendÚanyÚbool)r   ÚrespÚsoupÚarticlesÚitemÚ	title_divÚa_tagr   Úday_spanÚ	year_spanÚ	date_textÚtime_divÚ	pages_divÚhas_nextr   s                 @r"   Ú
crawl_listrD      sî  ø€ ðÜ�|‰|˜C¬¸"ÀUÔKˆØˆŒð ×Ñ˜3ÒØ�5ˆyÐä˜Ÿ™ MÓ2€DØ€Hð —‘˜e¨O�Ó<ó JˆØ—I‘I˜e¨N�IÓ;ˆ	ÙØØ—‘˜s¨�Ó.ˆÙØØ�y‰y˜ Ó$ˆØ�?‰?˜3ÔÜ˜$‘;‰DØ—‘ Ô(Ü˜#‘: §¡¨CÓ 0Ñ0ˆDà—‘ T�Ó*ˆð —9‘9˜U¨<�9Ó8ˆØ—I‘I˜e¨M�IÓ:ˆ	Øˆ	Ù™	Ø$×-Ñ-°DÐ-Ó9Ð:¸!¸H×<MÑ<MÐTXÐ<MÓ<YÐ;ZÐ[ˆIà!×)Ñ)¨%°Ó5×=Ñ=¸eÀRÓHˆIáœ˜E›
 QšÙà�‰ %°¸iÑHÖIð7Jð< —‘˜e¨O�Ó<ò NˆØ—I‘I˜eÐ,?�IÓ@ˆ	ÙØØ—‘˜s¨�Ó.ˆÙØØ�y‰y˜ Ó$ˆØ�?‰?˜3ÔÜ˜$‘;‰DØ—‘ Ô(Ü˜#‘: §¡¨CÓ 0Ñ0ˆDà—‘ T�Ó*ˆà—9‘9˜U¨?�9Ó;ˆÙ5=�H×%Ñ%¨DÐ%Ô1À2ˆ	áœ˜E›
 QšØô Ó6¨XÔ6Õ6Ø�O‰O e°DÀ)ÑLÕMð/Nð4 —	‘	˜% G�	Ó,€IÜ�IÒE +°×1CÑ1CÓ1EÐ"EÓF€Hà�XÐÐøðKØ�5ˆyÒús   ƒ$K( Ë(K0c                 ó¢  — g }t        | «      D ]¾  }|dk(  rt        t        z   }nt        t        j	                  |dz   «      z   }t        d|dz   › d|› �t        j                  ¬«       t        |«      \  }}t        dt        |«      › d�t        j                  ¬«       |s |S |j                  |«       |s |S t        j                  d«       ŒÀ |S )zCrawl multiple pages.r   é   z[LIST] Page z: ©Úfilez  Found z	 articles)Úranger0   Ú	LIST_PATHÚPAGINATION_TPLÚformatÚprintÚsysÚstderrrD   r4   ÚextendÚtimeÚsleep)Ú	max_pagesÚall_articlesÚpager   r:   rC   s         r"   Úcrawl_list_allrV   e   sÎ   € à€LÜ�iÓ ò ˆØ�1Š9ÜœÑ"‰Cäœ×.Ñ.¨t°a©xÓ8Ñ8ˆCä�˜T !™V˜H B s eÐ,´3·:±:Õ>Ü'¨›_Ñˆ�(Ü�œ˜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¬«      }|r|| d<   | j	                  dd«      }|j                  dd¬«      }|r7t        j                  d|j                  «       «      }|r|j                  d«      }|| d<   |j                  dd¬«      }	d }
t!        |	«      dk\  r|	d   }
|
s9|j                  dt        j"                  d«      ¬«      }t!        |«      dk\  r|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$   }t/        ˆfd%„|D «       «      rŒ˜|j1                  |‰d&œ«       Œ­ |
j                  d«      D ]À  }|j	                  d!d«      Št        j                  d‰t        j$                  «      sŒ;‰j'                  d"«      r	t(        ‰z   Š‰j'                  d#«      st(        d"z   ‰j+                  d"«      z   Š|j                  d¬«      xs ‰j-                  d"«      d$   }|j3                  d|› d‰› d�«       ŒÂ g }|
j4                  D ]—  }|j6                  d'k(  r|j1                  t9        |«      «       Œ-|j6                  d(v r(|j                  dd¬)«      }|sŒQ|j1                  |«       Œct;        |t8        «      sŒt|j=                  «       }|sŒ‡|j1                  |«       Œ™ |rd*j?                  |«      nd}t!        |j=                  «       «      d+k  rd| d   › d|› d�}|| d<   || d<   | S #  d| d   › d|› d�| d<   g | d<   | j	                  dd«      | d<   | cY S xY w),Nr   z	[DETAIL] r   é(   z...rG   r   Fr   r   ú[z](ú)ÚcontentÚattachmentsr   r   Údate_pubr   r   r   zshow-news-titler   Tr   zshow-news-infoz(\d{4}[-/]\d{2}[-/]\d{2})rF   é   r   z'\.(doc|pdf|docx|xls|xlsx|rar|zip)(\?|$)r   r   r   r   éÿÿÿÿc              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­wr   r    )r!   r   Úahrefs     €r"   r#   zcrawl_detail.<locals>.<genexpr>¹   s   øè ø€ Ò:¨�1�U‘8˜uÕ$Ñ:ùr$   )Únamer   Útable)Úpr   )Ú	separatorr   z

é   ) rM   rN   rO   r'   r(   r)   r*   r+   r   r,   r.   r2   ÚreÚsearchÚgroupr-   r4   ÚcompileÚIr/   r0   r1   Úsplitr6   r5   Úreplace_withÚchildrenrc   ÚstrÚ
isinstancer   Újoin)Úarticler   r8   r9   r<   Útr@   Úinfo_divÚmÚ	info_divsÚcontent_divÚcontent_allr]   r=   ÚatextÚpartsÚchildr,   Úcontent_textrb   s                      @r"   Úcrawl_detailr~   {   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ð —	‘	˜%Ð(9�	Ó:€IÙØ×Ñ TÐÓ*ˆÙØ ˆG�GÑð —‘˜F BÓ'€IØ�y‰y˜Ð'7ˆyÓ8€HÙÜ�I‰IÐ2°H×4EÑ4EÓ4GÓHˆÙØŸ™ ›
ˆIØ#€GˆJÑð —‘˜eÐ,<�Ó=€IØ€KÜ
ˆ9ƒ~˜ÒØ ‘lˆÙà—m‘m E´"·*±*Ð=NÓ2O�mÓPˆÜˆ{Ó˜qÒ Ø% a™.ˆKáØ  ¨Ñ!1Ð 2°"°S°E¸Ð;ˆ�	ÑØ!#ˆ�ÑØˆð €KØ×%Ñ% c´·
±
Ð;eÔgi×gkÑgkÓ0lÐ%Ómò >ˆØ—	‘	˜& "Ó%ˆØ×Ñ˜CÔ Ü˜5‘LˆEØ×Ñ Ô'Ü˜3‘J §¡¨cÓ!2Ñ2ˆEØ—‘ T�Ó*ÒB¨e¯k©k¸#Ó.>¸rÑ.BˆÜÓ:¨kÔ:Õ:Ø×Ñ¨°eÑ<Õ=ð>ð ×%Ñ% cÓ*ò 6ˆØ—	‘	˜& "Ó%ˆÜ�9‰9Ð?ÀÌÏÉÕMØ×Ñ Ô$Ü˜u™�Ø×#Ñ# FÔ+Ü˜s™
 U§\¡\°#Ó%6Ñ6�Ø—N‘N¨�NÓ.ÒF°%·+±+¸cÓ2BÀ2Ñ2FˆEØ×Ñ  5 '¨¨E¨7°!Ð4Õ5ð6ð €EØ×%Ñ%ò #ˆØ�:‰:˜Ò Ø�L‰Lœ˜U›Õ$Ø�Z‰Z˜<Ñ'Ø—>‘>¨B°d�>Ó;ˆDÚà—‘˜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   ­$Q Ñ-R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 )NrF   z--incrementalz[LIST] Total: rG   z[]rZ   r   z] Crawling detail...g      à?r   r   r   r^   r   r\   r]   )r   r   r   r\   r]   Fr_   )Úensure_asciiÚindent)Ú	MAX_PAGESr4   rN   ÚargvrV   rM   rO   Ú	enumerater~   rQ   rR   r(   ÚjsonÚdumps)rS   r:   Úir   Úoutputs        r"   Ú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__rN   rh   r…   rQ   r'   Úbs4r   Úurllib3Údisable_warningsr0   rJ   rK   r‚   r)   rD   rV   r~   r‰   Ú__name__r    rW   r"   ú<module>r�      s|   ðñ÷
 %× $Ó $Ý Û Ø €× Ñ Ô à€Ø€	Ø €Ø€	ð QØOØ0ñ€òJòZò,bòJ<ð6 ˆzÒÙ…Fð rW   