Ë
    ¸¬uj{  ã                   ó®  — 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mZ  e j                  dd«      Z	dZ
dZedz   Z ej                  «        ed¬	«      z
  j                  d
«      ZdZddiZd„ Zd„ Zd„ Zdd„Zedk(  rR eej0                  «      dkD  r2ej0                  d   j3                  «       r eej0                  d   «      ndZ ee«       yy)é    N)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/root/search.dbu   å¤ªä»†å¯ºæ——-é€šçŸ¥å…¬å‘Šzhttps://www.tpsq.gov.cnz/tpsq/zwdt/tzggiG  )Údaysú%Y-%m-%dé   z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 óÞ   — t        d«      D ]C  }	 t        j                  | t        d¬«      }|j                  dk(  rd|_        |j                  c S ŒE y #  t        j                  d«       Y Œ`xY w)Né   é   )ÚheadersÚtimeoutéÈ   zutf-8)	ÚrangeÚrequestsÚgetÚHÚstatus_codeÚencodingÚtextÚtimeÚsleep)ÚurlÚretryÚrs      ú/root/gov_crawler/crawl_tpsq.pyÚfetchr      sd   € Ü�q“ò ˆð	Ü—‘˜S¬!°RÔ8ˆAØ�}‰} Ò#Ø$�”
Ø—v‘v’ð $ðð øð	Ü�J‰J�qŽMús   �=AÁA,c                 ó®  — g }t        j                  d| «      D ]¹  }|j                  d«      }t        j                  dd|j                  d«      «      j	                  «       }t
        |z   }d}t        j                  d|«      }|r7|j                  d«      › d|j                  d«      › d|j                  d«      › �}|sŒ¥|j                  |||d	œ«       Œ» |S )
Nz;href="(/tpsq/zwdt/tzgg/\d{16,}/index\.html)"[^>]*>(.*?)</a>é   ú<[^>]+>Ú r
   z#/tzgg/(\d{4})(\d{2})(\d{2})\d{10,}/ú-é   )r   ÚtitleÚdate)ÚreÚfinditerÚgroupÚsubÚstripÚBASEÚsearchÚappend)ÚhtmlÚitemsÚmÚhrefr#   r   r$   Údms           r   Ú
parse_listr2      sÄ   € Ø€Eä�[‰[ÐWÐY]Ó^ò EˆØ�w‰w�q‹zˆÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆÜ�T‰kˆð ˆÜ�Y‰YÐ=¸tÓDˆÙØ—h‘h˜q“k�] ! B§H¡H¨Q£K =°°"·(±(¸1³+°Ð?ˆDâØ�L‰L ¨u¸dÑCÕDðEð €Ló    c                 ó   — d}t        j                  d| «      }|r|j                  d«      j                  «       }|sGt        j                  d| «      }|r/|j                  d«      j	                  dd«      j                  «       }|st        j                  d| «      }|r	 d}t        j                  d| «      }|r|j                  d«      }|s)t        j                  d| «      }|r|j                  d«      }d}t        j                  d	| t         j
                  «      }|rn|j                  d«      j                  «       }t        j                  d
d|t         j
                  t         j                  z  ¬«      }t        j                  dd|«      }|||fS )Nr    z/<meta\s+name="ArticleTitle"\s+content="([^"]+)"r   z<title>(.*?)<u   _å¤ªä»†å¯ºæ——äººæ°‘æ”¿åºœu   å�‘å¸ƒæ—¥æœŸ[ï¼š:][^<]+z5<meta\s+name="PubDate"\s+content="(\d{4}-\d{2}-\d{2})u(   å�‘å¸ƒæ—¥æœŸ[ï¼š:]\s*(\d{4}-\d{2}-\d{2})zTRS_Editor[^>]*>(.*?)</div>z<(script|style)[^>]*>.*?</\1>)Úflagszfont-family:\s*"([^"]+)"zfont-family: '\1')r%   r+   r'   r)   ÚreplaceÚDOTALLr(   ÚI)r-   r#   r/   Úpublish_dateÚcontents        r   Úextract_detailr;   /   sP  € à€EÜ
�	‰	ÐDÀdÓK€AÙØ—‘˜“
× Ñ Ó"ˆÙÜ�I‰IÐ&¨Ó-ˆÙØ—G‘G˜A“J×&Ñ&Ð'BÀBÓG×MÑMÓOˆEÙÜ�I‰IÐ0°$Ó7ˆÙàð €LÜ
�	‰	ÐJÈDÓQ€AÙØ—w‘w˜q“zˆÙÜ�I‰IÐAÀ4ÓHˆÙØŸ7™7 1›:ˆLð €GÜ
�	‰	Ð0°$¼¿	¹	ÓB€AÙØ—'‘'˜!“*×"Ñ"Ó$ˆä—&‘&Ð9¸2¸wÌbÏiÉiÔXZ×X\ÑX\ÉnÔ]ˆô —&‘&Ð4Ð6JÈGÓTˆà�, Ð'Ð'r3   c                 ó‚  — | €t         } t        dd› dt        › dd› �«       g }t        d| dz   «      D ]Â  }|dk(  r	t        dz   nt        › d|› d�}t        |«      }|st        d|› d	�«        nŠt        |«      }|D �ch c]  }|d
   ’Œ	 }}|D �cg c]  }|d
   |vsŒ|‘Œ }}|st        d|› d�«        nCt        d|› dt        |«      › d�«       |j                  |«       t        j                  d«       ŒÄ |st        d«       y t        dt        |«      › d�«       t        j                  t        «      }	dx}
x}}t        |d«      D �]}  \  }}|d   r|d   t        k  r|dz  }Œt        |d
   «      }|st        d|d   d d › �«       |dz  }ŒHt!        |«      \  }}}|s|d   }|s|d   }|r.t        t#        j$                  dd|«      j'                  «       «      nd}|dk  r|dz  }Œ¢	 d}	 t)        t+        j,                  |d«      j/                  «       «      }t#        j$                  dd|«      j'                  «       d d }|	j1                  dt        |d
   |d
   |||||df	«       |	j2                  r|
dz  }
n|dz  }|dz  dk(  r*|	j7                  «        t        d!|› d"t        |«      › �«       t        j                  d#«       �Œ€ |	j7                  «        	 |	j1                  d$t        f«       |	j1                  d%t        f«       |	j7                  «        |	j9                  «        t        d't        › d(|
› d)|› d*|› �«       y c c}w c c}w #  t)        t        j                  «       «      }Y �ŒUxY w# t4        $ r}t        d |› �«       |dz  }Y d }~�Œd }~ww xY w# t4        $ r}t        d&|› �«       Y d }~Œ¡d }~ww xY w)+Nú
z2==================================================u   
ðŸš€ r   z/index.htmlz
/8d316e6f-z.htmlu     âš ï¸� ç¬¬u   é¡µå�–ä¸�åˆ°r   u	     â†’ ç¬¬u   é¡µæ— æ–°æ�¡ç›®u   ðŸ“‹ ç¬¬u   é¡µ: u    æ�¡g      à?u     âš ï¸� æ— æ•°æ�®u
   
ðŸ“Š å…± u    æ�¡ (åŽ»é‡�å�Ž)r   r$   u     âš ï¸� è¯¦æƒ…å�–ä¸�åˆ°: r#   r   r   r    é
   r   r   z�INSERT OR REPLACE INTO gov_raw(site_name,source_url,page_url,title,publish_date,content,summary,date_rank,category) VALUES(?,?,?,?,?,?,?,?,?)u   é€šçŸ¥å…¬å‘Šu
     â�Œ DB: z  ...ú/g333333Ó?z(DELETE FROM gov_search WHERE site_name=?zyINSERT INTO gov_search(rowid,title,site_name,summary) SELECT rowid,title,site_name,summary FROM gov_raw WHERE site_name=?u   âš ï¸� FTS: u   
âœ… u   : æ–°å¢žu   , ç©ºæ­£æ–‡u   , è·³è¿‡)Ú	MAX_PAGESÚprintÚ	SITE_NAMEr   Ú	LIST_BASEr   r2   ÚlenÚextendr   r   Úsqlite3Úconnectr   Ú	enumerateÚCUTOFFr;   r%   r(   r)   Úintr   ÚstrptimeÚ	timestampÚexecuteÚtotal_changesÚ	ExceptionÚcommitÚclose)Ú	max_pagesÚ	all_itemsÚpgr   r-   r.   ÚiÚexistingÚ	new_itemsÚconnÚnewÚskipÚno_bodyÚitemr#   r$   r:   Útext_lenÚdrÚsummaryÚes                        r   Úrunra   V   sí  € ØÐÜˆ	Ü	ˆBˆvˆh�gœi˜[¨¨6¨(Ð
3Ô4à€IÜ�A�y 1‘}Ó%ò ˆØ+-°ª7Œi˜-Ò'¼9¸+ÀZÐPRÈtÐSXÐ8YˆÜ�S‹zˆÙÜ�L   LÐ1Ô2ÙÜ˜4Ó ˆà&/Ö0 �A�e“HÐ0ˆÐ0Ø %ÖB˜1¨¨5©¸Ò)A’QÐBˆ	ÐBÙÜ�I˜b˜T Ð1Ô2ÙÜ�˜˜˜E¤# i£.Ð!1°Ð6Ô7Ø×Ñ˜Ô#Ü�
‰
�3�ðñ" ÜÐ"Ô#Øä	ˆKœ˜I›Ð'Ð'7Ð
8Ô9ä�?‰?œ9Ó%€DØÐ€CÐˆ$�ä˜Y¨Ó*ó ,‰ˆˆ4Ø�Š<˜D ™L¬6Ò1Ø�A‰IˆDØä�T˜%‘[Ó!ˆÙÜÐ.¨t°G©}¸S¸bÐ/AÐ.BÐCÔDØ�A‰IˆDØä-¨dÓ3Ñˆˆt�WÙØ˜‘MˆEÙØ˜‘<ˆDáCJ”3”r—v‘v˜j¨"¨gÓ6×<Ñ<Ó>Ô?ÐPQˆØ�bŠ=Ø�q‰LˆGØð	ØˆBð&Üœ×*Ñ*¨4°Ó<×FÑFÓHÓI�ô —f‘f˜Z¨¨WÓ5×;Ñ;Ó=¸d¸sÐCˆGØ�L‰Lð `Ü˜D ™K¨¨e©°e¸TÀ7ÈGÐUWÐYgÐhôð ×!Ò!Ø�q‘‘à˜‘	�ð
 ˆr‰6�QŠ;Ø�K‰KŒMÜ�E˜!˜˜Aœc )›nÐ-Ð.Ô/Ü�
‰
�3ŽðY,ð\ 	‡K�K„Mð"Ø�‰Ð?Ä)ÀÔNØ�‰ð  Qô  T]ð  S_ô  	`Ø�‰Œð 	‡J�J„Lä	ˆF”9�+˜X c U¨+°g°Y¸hÀtÀfÐ
MÕNùòS 1ùÚBøðV&ÜœŸ™›Ó%“ûô ò 	Ü�J˜q˜cÐ"Ô#Ø�A‰IŽDûð	ûô ò "Ü�˜Q˜CÐ ×!Ñ!ûð"ús[   Á<MÂM	ÂM	Ç+M3Ç.-MÈA$M3Ë>N ÍM0Í-M3Í3	NÍ<NÎNÎ	N>Î&N9Î9N>Ú__main__r   )N)Úosr   r%   rF   Úsysr   r   r   Úgetenvr   rB   r*   rC   ÚnowÚstrftimerI   r@   r   r   r2   r;   ra   Ú__name__rD   ÚargvÚisdigitrJ   Úmp© r3   r   ú<module>rm      sÙ   ðã 	ð÷ ,× +× +ß (àˆB�I‰I�kÐ#4Ó5€	Ø'€	Ø €ØÐ$Ñ$€	Ø
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€Ø€	ØÐQÐR€ò	òò&%(óNWOðr ˆzÒÙ  §¡›]¨QÒ.°3·8±8¸A±;×3FÑ3FÔ3H‰ˆS�X‰X�a‰[Ô	Èd€BÙˆ…Gð r3   