Ë
    ¸¬ujÏ  ã                   óL  — 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	ddlZ
 ee
j                  «      dkD  r2e
j                  d   j                  «       r ee
j                  d   «      ndZe� ed ee«      z   «       ej$                  j'                  dej$                  j)                  ej$                  j+                  e«      «      «       ddlmZ  e	j2                  e	j4                  j6                  «       ddd	œZd
dd	œZdZ ej>                  ej@                  «       ed¬«      z
  jC                  d«      Z"ddiZ#d„ Z$d„ Z%d„ Z&d!d„Z'e(dk(  rÏddl)Z) e)jT                  «       Z+e+jY                  dd¬«       e+jY                  de¬«       e+j[                  «       Z. ej                  «       Z/e.j`                  xs)  eej                  «      dkD  xr ej                  d   dk(  Z0eD ]  Z1 e'e0e.jd                  e1¬«       Œ  ed ej                  «       e/z
  d›d �«       yy)"u  


å¤§å�Œç»�å¼€åŒº-å…¬ç¤ºå…¬å‘Š (kfq.dt.gov.cn)
åˆ—è¡¨: /dtjjjskfqz/gsgg/listN.shtml â€” é�™æ€�HTML <li data-*>
è¯¦æƒ…: /dtjjjskfqz/gsgg/YYYYMM/{hash}.shtml
æ­£æ–‡: div.TRS_Editor / ucapcontent
æ ‡é¢˜: <meta name="ArticleTitle">
æ—¥æœŸ: <meta name="PubDate">
é    N)ÚdatetimeÚtimezoneÚ	timedeltaé   z[AutoPg] max_pages=)Úpush_to_searchdbu   å¤§å�Œç»�å¼€åŒº-å…¬ç¤ºå…¬å‘Šu   å¤§å�Œç»�å¼€åŒº-å…¶ä»–å…¬å‘Š)ÚgsggÚqtgsz
gsgg/listNz	qtgs/listzhttps://kfq.dt.gov.cniG  )Údaysz%Y-%m-%dz
User-Agentz[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/125.0.0.0 Safari/537.36c                 ór   — 	 t        j                  | t        dd¬«      }d|_        |j                  S #  Y y xY w)Né   F)ÚheadersÚtimeoutÚverifyzutf-8)ÚrequestsÚgetÚHEADERSÚencodingÚtext)ÚurlÚrs     ú%/root/gov_crawler/crawl_dtjjjskfqz.pyÚfetchr   $   s5   € ðÜ�L‰L˜¤g°rÀ%ÔHˆØˆŒ
Ø�v‰vˆøðÙús   ‚/2 ²6c                 óÆ  — g }d}t        j                  || «      D �]B  }|j                  d«      rd|j                  d«      rS|j                  d«      rB|j                  d«      j                  «       }|j                  d«      }|j                  d«      }nv|j                  d«      rd|j                  d«      rS|j                  d«      rB|j                  d«      j                  «       }|j                  d«      }|j                  d«      }nŒï|sŒò|j	                  d«      r|j                  dd	«      }|j	                  d
«      s	t        |z   }|j                  |||f«       �ŒE |S )u:   ä»Žé�™æ€�HTMLæ��å�–åˆ—è¡¨: data-title, data-url, data-timez£<li[^>]*data-title="([^"]*)"[^>]*data-url="([^"]*)"[^>]*data-time="([^"]*)"[^>]*>|<li[^>]*data-time="([^"]*)"[^>]*data-url="([^"]*)"[^>]*data-title="([^"]*)"[^>]*>r   é   é   é   é   é   z../../ú/Úhttp)ÚreÚfinditerÚgroupÚstripÚ
startswithÚreplaceÚBASE_URLÚappend)ÚhtmlÚitemsÚpatternÚmÚtitleÚhrefÚdate_strs          r   Ú
parse_listr0   ,   s  € à€Eð u€GÜ�[‰[˜ $Ó'ó .ˆØ�7‰7�1Œ:˜!Ÿ'™' !œ*¨¯©°¬à—G‘G˜A“J×$Ñ$Ó&ˆEØ—7‘7˜1“:ˆDØ—w‘w˜q“z‰HØ�W‰W�QŒZ˜AŸG™G AœJ¨1¯7©7°1¬:à—G‘G˜A“J×$Ñ$Ó&ˆEØ—7‘7˜1“:ˆDØ—w‘w˜q“z‰HàÙØØ�?‰?˜8Ô$Ø—<‘< ¨#Ó.ˆDØ�‰˜vÔ&Ü˜d‘?ˆDØ�‰�e˜T 8Ð,Ö-ð'.ð( €Ló    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<   t        j                  d|«      }|r|j                  d«      |d	<   d }t        j                  d
|t        j                  «      }|r<t        |j                  d«      «      dkD  r|j                  d«      j	                  «       }|sFt        j                  d|t        j                  «      }|r|j                  d«      j	                  «       }|sFt        j                  d|t        j                  «      }|r|j                  d«      j	                  «       }|rut        j                  dd|t        j                  t        j                  z  ¬«      }t        j                  dd|t        j                  t        j                  z  ¬«      }||d<   |j                  d«      |j                  d«      |j                  d	«      fS )N)NNNz3<meta[^>]*name="ArticleTitle"[^>]*content="([^"]+)"r   r-   z<h1[^>]*>(.*?)</h1>ú<[^>]+>Ú z9<meta[^>]*name="PubDate"[^>]*content="(\d{4}-\d{2}-\d{2})Úpublish_datez?<div[^>]*class='[^']*TRS_Editor[^']*'[^>]*>(.*?)</div>\s*</div>é2   z <ucapcontent>(.*?)</ucapcontent>z7id="detailCont2"[^>]*>(.*?)</div>\s*<div class="xl_con4z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>Úcontent)
r   r!   Úsearchr#   r$   r   ÚDOTALLÚsubÚlenÚI)r   r)   Úresultr,   r8   s        r   Úfetch_detailr?   F   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ô 	�	‰	ÐNÐPTÓU€AÙØ!"§¡¨£ˆˆ~Ñð €GÜ
�	‰	ÐTÐVZÔ\^×\eÑ\eÓf€AÙŒS�—‘˜“‹_˜rÒ!Ø—'‘'˜!“*×"Ñ"Ó$ˆñ Ü�I‰IÐ9¸4ÄÇÁÓKˆÙØ—g‘g˜a“j×&Ñ&Ó(ˆGñ Ü�I‰IÐPÐRVÔXZ×XaÑXaÓbˆÙØ—g‘g˜a“j×&Ñ&Ó(ˆGáÜ—&‘&Ð5°r¸7Ì"Ï)É)ÔVX×VZÑVZÑJZÔ[ˆÜ—&‘&Ð3°R¸ÌÏ	É	ÔTV×TXÑTXÑHXÔYˆØ#ˆˆyÑà�:‰:�gÓ §
¡
¨9Ó 5°v·z±zÀ.Ó7QÐQÐQr1   c                 óB  — t         j                  |t         d   «      }t        j                  |t        d   «      }t        › d|› d�}t	        dd› d|› dd› �«       t	        ddd	¬
«       t        |«      }|st	        d«       y t        |«      }t	        dt        |«      › d�«       |D ��	�
cg c]  \  }}	}
|
t        k\  sŒ||	|
f‘Œ }}	}}
t	        dt        |«      › d�«       | r|d d }t	        dt        |«      › d�«       |r|d | }t	        dt        |«      › d�«       g t        «       }}dd l
}|j                  d«      }t        «       }	 |j                  d|f«      }|j                  «       D ]  }|j                  |d   «       Œ 	 |j                  «        |D ��	�
cg c]  \  }}	}
|	|vsŒ||	|
f‘Œ }}	}}
t	        dt        |«      t        |«      z
  › dt        |«      › d�«       |}t!        |«      D ]á  \  }\  }}}||v rŒ|j                  |«       t	        d|dz   › dt        |«      › d|d d › d�dd	¬
«       t#        |«      \  }}}|xs |}|xs |}t%        j&                  dd|xs d«      j)                  «       d d }t%        j&                  d d|«      }|j+                  ||||xs d|||d!œ«       t	        d"«       t-        j.                  d#«       Œã |rt1        |d$«       nt	        d%«       t	        d&t        |«      › d�«       y c c}
}	}w #  Y �Œ�xY wc c}
}	}w )'Nr   z/dtjjjskfqz/z.shtmlú
z2==================================================u   
ðŸ�  u   ðŸ“„ èŽ·å�–åˆ—è¡¨é¡µ...ú T)ÚendÚflushu   â�Œ åˆ—è¡¨é¡µå¤±è´¥u   âœ… u    æ�¡u   ðŸ“… è¿‘3å¹´: r   u   ðŸ”„ å¢žé‡�æ¨¡å¼�: å�–å‰� u   ðŸ§ª æµ‹è¯•æ¨¡å¼�: é™� r   z/root/search.dbz.SELECT page_url FROM gov_raw WHERE site_name=?u   ðŸ’¾ å·²å­˜åœ¨: u    æ�¡, å¾…æŠ“: z  [r   r   z] r6   z...r3   r4   i,  z\s+)Ú	site_namer-   r   r8   Úpub_dateÚsummaryÚtagsu   âœ…g333333Ó?Ú
dtjjjskfqzu     â�­ æ— æ•°æ�®ï¼Œè·³è¿‡æŽ¨é€�u   
âœ… å®Œæˆ�! å…± )Ú
SITE_NAMESr   ÚCOLUMN_PATHSr'   Úprintr   r0   r<   ÚTHREE_YEARS_AGOÚsetÚsqlite3ÚconnectÚexecuteÚfetchallÚaddÚcloseÚ	enumerater?   r!   r;   r$   r(   ÚtimeÚsleepr   )ÚincrementalÚlimitÚcolumnrE   Ú	list_pathÚlist_urlr)   r*   ÚtÚuÚdÚfilteredÚ	all_itemsÚseenrO   ÚdbÚexisting_urlsÚcurÚrowÚnew_filteredÚir-   r   Ú	list_dateÚdt_titler8   rF   Úfinal_titleÚ
final_daterG   s                                 r   Úmainrm   u   s5  € Ü—‘˜v¤z°&Ñ'9Ó:€IÜ× Ñ  ¬°fÑ)=Ó>€IÜ�˜<¨	 {°&Ð9€HÜ	ˆBˆvˆh�g˜i˜[¨¨6¨(Ð
3Ô4ä	Ð
#¨°DÕ9Ü�‹?€DÙÜÐ#Ô$Øä�tÓ€EÜ	ˆD”�U“�˜DÐ
!Ô"ð */×GÐG™g˜a  A°!´Ó2F��A�q’	ÐG€HÒGÜ	ˆNœ3˜x›=˜/¨Ð
.Ô/áØ˜C˜R�=ˆÜÐ*¬3¨x«=¨/¸Ð>Ô?áØ˜F˜UÐ#ˆÜÐ'¬¨H« °dÐ;Ô<àœ#›%ˆt€IãØ	�‰Ð*Ó	+€BÜ“E€MðØ�j‰jÐIÈIÈ<ÓXˆØ—<‘<“>ò 	&ˆCØ×Ñ˜c !™fÕ%ñ	&ð ‡H�H„JØ)1×LÐL¡  ! A°Q¸mÒ5K�Q�q˜’GÐL€LÒLÜ	ÐœS ›]¬3¨|Ó+<Ñ<Ð=¸^ÌCÐP\ÓL]ÐK^Ð^bÐ
cÔdØ€Hä&/°Ó&9ò Ñ"ˆÑ"ˆE�3˜	Ø�$‰;ØØ�‰�Œä��A�a‘C�5˜œ#˜h›-˜¨¨5°°"¨:¨,°cÐ:ÀÈ4ÕPÜ&2°3Ó&7Ñ#ˆ�'˜8ØÒ' %ˆØÒ* ˆ
ä—&‘&˜ S¨'ª-°RÓ8×>Ñ>Ó@ÀÀ#ÐFˆÜ—&‘&˜  gÓ.ˆà×ÑØ"Ø ØØ’} "Ø"ØØñ
ô 	ô 	ˆeŒÜ�
‰
�3�ð/ñ2 Ü˜ LÕ1äÐ.Ô/ä	Ðœs 9›~Ð.¨dÐ
3Õ4ùôq Høð( ŠDüäLs$   Â+LÂ>LÅ<L ÆLÆ,LÌLÚ__main__z--incrementalÚ
store_true)Úactionz--limit)ÚtypeÚ1)rX   rY   rZ   u   â�± æ€»è€—æ—¶: z.1fÚs)FNr   )3Ú__doc__ÚsysÚosr!   rV   r   r   r   r   Úurllib3Ú_SYSr<   ÚargvÚisdigitÚintÚ_MAX_PGrL   ÚstrÚpathÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   Údisable_warningsÚ
exceptionsÚInsecureRequestWarningrJ   rK   r'   ÚnowÚutcÚstrftimerM   r   r   r0   r?   rm   Ú__name__ÚargparseÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsÚt0rX   ÚcolrY   © r1   r   ú<module>r”      sý  ðñ	÷ × ß 2Ñ 2ß Û Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/à ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (Ø €× Ñ ˜×+Ñ+×BÑBÔ Cð +Ø*ñ€
ð
 Øñ€ð #€Ø�8—<‘< §¡Ó-±	¸uÔ0EÑE×OÑOÐPZÓ[€ØÐvÐ
w€òòò4,Ró^H5ðV ˆzÒÛØ$ˆX×$Ñ$Ó&€FØ
×Ñ˜°ÐÔ=Ø
×Ñ˜	¨ÐÔ,Ø×ÑÓ€Dà	ˆ�‰‹€BØ×"Ñ"ÒP¡s¨3¯8©8£}°qÑ'8Ò'O¸S¿X¹XÀa¹[ÈCÑ=O€Kàò DˆÙ˜¨D¯J©J¸sÖCðDá	ˆO˜I˜DŸI™I›K¨™N¨3Ð/¨qÐ
1Õ2ð r1   