Ë
    ¸¬uj…  ã                   óü  — d Z ddlZddlZddlZddlZddlmZmZm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mZ  e	j$                  e	j&                  j(                  «       dZdZdZ ej0                  ej2                  «       ed¬	«      z
  j5                  d
«      ZdZddiZd„ Zd„ Zd„ Z d„ Z!dd„Z"e#dk(  r†ddl$Z$ e$jJ                  de› �¬«      Z&e&jO                  ddd¬«       e&jQ                  «       Z) ej                  «       Z* e"e)jV                  rdnd¬«        e,d ej                  «       e*z
  d›d�«       yy) uñ   
ä¹�æ±Ÿç»�å¼€åŒº - ç”Ÿæ€�çŽ¯å¢ƒ (jkq.jiujiang.gov.cn)
åˆ—è¡¨: /fdzdgk20251207/zdly/ggjg/sthj/
      index.html, index_1.html, index_2.html...
è¯¦æƒ…: /fdzdgk20251207/zdly/ggjg/sthj/202604/t20260429_7230813.html
æ­£æ–‡: div.Zoom æˆ– div#Zoom
é    N)ÚdatetimeÚtimezoneÚ	timedelta)Úpush_to_searchdbÚ
clean_htmlu   ä¹�æ±Ÿç»�å¼€åŒº-ç”Ÿæ€�çŽ¯å¢ƒzhttps://jkq.jiujiang.gov.cnz:https://jkq.jiujiang.gov.cn/fdzdgk20251207/zdly/ggjg/sthj/iG  )Údaysz%Y-%m-%dé   z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 ó¬   — 	 t        j                  | t        dd¬«      }d|_        |j                  S # t
        $ r}t        d|› �«       Y d }~y d }~ww xY w)Né   F)ÚheadersÚtimeoutÚverifyzutf-8z  fetch error: )ÚrequestsÚgetÚHEADERSÚencodingÚtextÚ	ExceptionÚprint)ÚurlÚrÚes      ú'/root/gov_crawler/crawl_jiujiang_jkq.pyÚfetchr      sM   € ðÜ�L‰L˜¤g°rÀ%ÔHˆØˆŒ
Ø�v‰vˆøÜò Ü� ˜sÐ#Ô$Üûðús   ‚/2 ²	A»AÁAc                 ó.  ‡— g }d}t        j                  || t         j                  «      D ]ç  }|j                  d«      j	                  «       }t        j
                  dd|j                  d«      «      j	                  «       Š‰rt        ‰«      dk  rŒgt        ˆfd„dD «       «      rŒ||j                  d	«      r
t        |z   }n>|j                  d
«      r|}n*t        j                  d	«      d	z   |j                  d«      z   }|j                  ‰|f«       Œé |S )u1   ä»Žåˆ—è¡¨é¡µ HTML æ��å�–æ‰€æœ‰æ�¡ç›® (title, url)z+<a[^>]*href="([^"]*?\.html)"[^>]*>(.*?)</a>é   ú<[^>]+>Ú é   é   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w©N© )Ú.0ÚkwÚtitles     €r   ú	<genexpr>zparse_list.<locals>.<genexpr>+   s   øè ø€ Òe˜rˆr�UŒ{Ñeùs   ƒ)u   é¦–é¡µu   æœ«é¡µu	   ä¸‹ä¸€é¡µu	   ä¸Šä¸€é¡µu   å°¾é¡µú...ú/Úhttpz./)ÚreÚfinditerÚDOTALLÚgroupÚstripÚsubÚlenÚanyÚ
startswithÚBASE_URLÚ	LIST_BASEÚrstripÚlstripÚappend)ÚhtmlÚitemsÚpatternÚmÚhrefÚfull_urlr&   s         @r   Ú
parse_listr?   "   sé   ø€ à€EØ<€GÜ�[‰[˜ $¬¯	©	Ó2ò (ˆØ�w‰w�q‹z×ÑÓ!ˆÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆÙœ˜E›
 QšØÜÓeÐ%dÔeÔeØØ�?‰?˜3ÔÜ $‘‰HØ�_‰_˜VÔ$Ø‰Hä ×'Ñ'¨Ó,¨sÑ2°T·[±[ÀÓ5FÑFˆHØ�‰�e˜XÐ&Õ'ð(ð €Ló    c                 ó<   — | dk(  r	t         dz   S t         › d| dz
  › d�S )u4   åˆ†é¡µURL: index.html, index_1.html, index_2.html...r   z
index.htmlÚindex_z.html)r5   )Úpages    r   Úget_page_urlrD   7   s+   € àˆq‚yÜ˜<Ñ'Ð'Üˆ[˜˜t a™x˜j¨Ð.Ð.r@   c                 óÖ  — t        | «      }|syi }t        j                  d|«      }|r"|j                  d«      j	                  «       |d<   |j                  d«      s^t        j                  d|t        j                  «      }|r7t        j                  dd|j                  d«      «      j	                  «       |d<   |j                  d«      s^t        j                  d|t        j                  «      }|r7t        j                  dd|j                  d«      «      j	                  «       |d<   t        j                  d	|«      }|r|j                  d«      |d
<   |j                  d
«      s,t        j                  d|«      }|r|j                  d«      |d
<   d}t        j                  d|t        j                  «      }|r|j                  d«      j	                  «       }|rt        |«      dk  rFt        j                  d|t        j                  «      }|r|j                  d«      j	                  «       }|rt        |«      dk  rFt        j                  d|t        j                  «      }|r|j                  d«      j	                  «       }|rªt        j                  dd|t        j                  t        j                  z  ¬«      }t        j                  dd|t        j                  t        j                  z  ¬«      }t        j                  dd|t        j                  ¬«      }t        |«      dkD  r||d<   |j                  d«      svdD ]q  }t        j                  d|z   dz   |t        j                  «      }|sŒ1t        |j                  d«      «      dkD  sŒO|j                  d«      j	                  «       |d<    n |j                  d«      |j                  d«      |j                  d
«      fS )u/   èŽ·å�–è¯¦æƒ…é¡µ: æ ‡é¢˜ã€�æ­£æ–‡ã€�å�‘å¸ƒæ—¥æœŸ)NNNz3<meta[^>]*name="ArticleTitle"[^>]*content="([^"]*)"r   r&   z<h1[^>]*>(.*?)</h1>r   r   z<h2[^>]*>(.*?)</h2>z=<meta[^>]*name="PubDate"[^>]*content="(\d{4}-\d{1,2}-\d{1,2})Úpublish_dateu,   å�‘å¸ƒæ—¶é—´[ï¼š:]\s*(\d{4}-\d{1,2}-\d{1,2})Nz7<div[^>]*id="Zoom"[^>]*>(.*?)</div>\s*(?:<div|<!\-\-|$)éd   z:<div[^>]*class="Zoom"[^>]*>(.*?)</div>\s*(?:<div|<!\-\-|$)zD<div[^>]*class="[^"]*Zoom[^"]*"[^>]*>(.*?)</div>\s*(?:<div|<!\-\-|$)z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>z
<!--.*?-->Úcontent)Ú
TRS_Editorzarticle-contentrI   Úarticler   Úmainz<(div|section)[^>]*class="[^"]*z[^"]*"[^>]*>(.*?)</\1>r   )
r   r+   Úsearchr.   r/   r   r-   r0   r1   ÚI)r   r9   Úresultr<   rI   Úclss         r   Úfetch_detailrQ   >   s  € ä�‹:€DÙØà€Fô 	�	‰	ÐHÈ$ÓO€AÙØŸ'™' !›*×*Ñ*Ó,ˆˆw‰Ø�:‰:�gÔÜ�I‰IÐ,¨d´B·I±IÓ>ˆÙÜ Ÿf™f Z°°Q·W±W¸Q³ZÓ@×FÑFÓHˆF�7‰OØ�:‰:�gÔÜ�I‰IÐ,¨d´B·I±IÓ>ˆÙÜ Ÿf™f Z°°Q·W±W¸Q³ZÓ@×FÑFÓHˆF�7‰Oô 	�	‰	ÐRÐTXÓY€AÙØ!"§¡¨£ˆˆ~ÑØ�:‰:�nÔ%Ü�I‰IÐEÀtÓLˆÙØ%&§W¡W¨Q£ZˆF�>Ñ"ð €GÜ
�	‰	ÐLÈdÔTV×T]ÑT]Ó^€AÙØ—'‘'˜!“*×"Ñ"Ó$ˆÙ”c˜'“l SÒ(Ü�I‰IÐSÐUYÔ[]×[dÑ[dÓeˆÙØ—g‘g˜a“j×&Ñ&Ó(ˆGÙ”c˜'“l SÒ(Ü�I‰IÐ]Ð_cÔeg×enÑenÓoˆÙØ—g‘g˜a“j×&Ñ&Ó(ˆGáÜ—&‘&Ð5°r¸7Ì"Ï)É)ÔVX×VZÑVZÑJZÔ[ˆÜ—&‘&Ð3°R¸ÌÏ	É	ÔTV×TXÑTXÑHXÔYˆÜ—&‘&˜¨¨G¼2¿9¹9ÔEˆÜˆw‹<˜#ÒØ 'ˆF�9Ñð �:‰:�iÔ ØZò 	ˆCÜ—	‘	Ø2°SÑ8Ð;TÑTØ”b—i‘ióˆAò ”S˜Ÿ™ ›“_ sÓ*Ø$%§G¡G¨A£J×$4Ñ$4Ó$6��yÑ!Ùð	ð �:‰:�gÓ §
¡
¨9Ó 5°v·z±zÀ.Ó7QÐQÐQr@   c                 ó®  — t        | «      }t        dd› dt        › dd› �«       g }|rdnt        }t	        d|dz   «      D ]î  }t        |«      }t        d|› d|› d�dd	¬
«       t        |«      }|sPt        d«       |dk(  r>t        }t        d|› d�dd	¬
«       t        |«      }|st        d«        nt        d«       n nqt        |«      }|s9t        d«       |dk(  r'|dd j                  dd«      }	t        d|	dd › d�«        n+t        dt        |«      › d�«       |j                  |«       Œð t        dt        |«      › d�«       t        «       }
g }d}|D ]8  \  }}||
v rŒ|
j                  |«       d|vr|dz  }Œ&|j                  ||f«       Œ: t        d|› dt        |«      › d�«       g }t        |«      D ]å  \  }\  }}t        d|dz   › dt        |«      › d|dd  › d�dd	¬
«       t!        |«      \  }}}|r|}|r|t"        k  rt        d!«       ŒZt%        j&                  d"d|xs d#«      j)                  «       dd$ }t%        j&                  d%d|«      }|j                  t        |||xs d#|xs d#|t        d&œ«       t        d«       t+        j,                  d'«       Œç |rt/        |d(«       nt        d)«       t        d*t        |«      › d+�«       |S ),u9   ä¸»å‡½æ•°ï¼Œæ”¯æŒ� --incremental (args='1' å�ªè·‘ç¬¬1é¡µ)ú
z2==================================================z
  r   u   
  ç¬¬ u    é¡µ [z]...ú T)ÚendÚflushÚFAILu     å°�è¯•å¤‡é€‰ [ÚOKz0 itemsNiÐ  u     HTMLé¢„è§ˆ: i�  r(   zOK (z items)u   
  åˆ—è¡¨æ€»è®¡: u    æ�¡ï¼ˆåŽ»é‡�å‰�ï¼‰r   u   é¡¹ç›®u     è¿‡æ»¤æŽ‰ u    æ�¡ä¸�å�«'é¡¹ç›®'ï¼Œå‰©ä½™ u    æ�¡z  [r)   z] é2   zSKIP (>3yr)r   r   i,  z\s+)Ú	site_namer&   r   rI   Úpub_dateÚsummaryÚtagsg333333Ó?Újiujiang_jkqz  NO valid data for searchdbz	
  DONE: z items stored)Úboolr   Ú	SITE_NAMEÚ	MAX_PAGESÚrangerD   r   r5   r?   Úreplacer1   ÚextendÚsetÚaddr8   Ú	enumeraterQ   ÚTHREE_YEARS_AGOr+   r0   r/   ÚtimeÚsleepr   )ÚargsÚincrementalÚall_listÚpagesrC   r   r9   Úalt_urlr:   ÚsnippetÚseenÚfilteredÚskippedr&   ÚresultsÚiÚdetail_titlerI   r[   r\   s                       r   Úrunrw      s÷  € ä�t“*€Kä	ˆBˆxˆj˜œY˜K r¨(¨Ð
4Ô5à€HÙ‰A¤)€Eä�a˜ ™Ó#ò ˆÜ˜4Ó ˆÜ�˜˜˜f S E¨Ð.°C¸tÕDÜ�S‹zˆÙÜ�&ŒMØ�qŠyÜ#�ÜÐ(¨¨	°Ð6¸CÀtÕLÜ˜W“~�ÙÜ˜&”MÙÜ�d•áÜ˜4Ó ˆÙÜ�)ÔØ�qŠyØ˜u ˜+×-Ñ-¨d°CÓ8�Ü˜ w¨t° } o°SÐ9Ô:ÙÜ�”S˜“Z�L Ð(Ô)Ø�‰˜Õð1ô4 
Ðœs 8›}˜oÐ-@Ð
AÔBô ‹5€DØ€HØ€GØò &‰
ˆˆsØ�$‰;ØØ�‰�ŒØ˜5Ñ Ø�q‰LˆGØØ�‰˜ ˜Õ%ð&ô 
ˆL˜˜	Ð!=¼cÀ(»m¸_ÈDÐ
QÔRà€GÜ$ XÓ.ò ‰ˆ‰<ˆE�3Ü��A˜‘E�7˜!œC ›M˜?¨"¨U°3°B¨Z¨L¸Ð<À#ÈTÕRÜ*6°sÓ*;Ñ'ˆ�g˜xÙØ ˆEÙ˜¤?Ò2Ü�-Ô ØÜ—&‘&˜ S¨'ª-°RÓ8×>Ñ>Ó@ÀÀ#ÐFˆÜ—&‘&˜  gÓ.ˆØ�‰Ü"ØØØ’} "Ø š BØÜñ
ô 	ô 	ˆdŒÜ�
‰
�3�ð)ñ, Ü˜ .Õ1äÐ,Ô-ä	ˆJ”s˜7“|�n MÐ
2Ô3Ø€Nr@   Ú__main__z	Crawler: )Údescriptionz--incrementalÚ
store_truezjust first page)ÚactionÚhelpÚ1)rk   z  Elapsed: z.1fÚsr"   )-Ú__doc__ÚsysÚosr+   ri   r   r   r   r   Úurllib3ÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   r   Údisable_warningsÚ
exceptionsÚInsecureRequestWarningr`   r4   r5   ÚnowÚutcÚstrftimerh   ra   r   r   r?   rD   rQ   rw   Ú__name__ÚargparseÚArgumentParserÚparserÚadd_argumentÚ
parse_argsrk   Út0rl   r   r#   r@   r   ú<module>r–      s[  ðñ÷ × ß 2Ñ 2ß Ø ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >ß 4Ø €× Ñ ˜×+Ñ+×BÑBÔ Cà*€	Ø(€ØH€	Ø�8—<‘< §¡Ó-±	¸uÔ0EÑE×OÑOÐPZÓ[€Ø€	ØÐWÐ
X€òòò*/ò>RóBQðh ˆzÒÛØ$ˆX×$Ñ$°9¸Y¸KÐ1HÔI€FØ
×Ñ˜°ÐCTÐÔUØ×ÑÓ€DØ	ˆ�‰‹€BÙ�D×$Ò$‰S¨$Õ/Ù	ˆK˜	˜Ÿ	™	› bÑ(¨Ð-¨QÐ
/Õ0ð r@   