Ë
    ¸¬uj¬  ã                   óP  — d Z ddlZddlZddlZddlZej
                  j                  dd«       ddlmZm	Z	 dZ
dZdZdZ ej                  d	d
«      ZddlZddlZdd„Zd„ Zd„ Zd„ Zd„ Zedk(  r8 ej                  «       Z e«         ed ej                  «       ez
  d›d�«       yy)uÊ   
å®�åŸŽåŽ¿ (ningchengxian.gov.cn) - é€šçŸ¥å…¬å‘Š
http://www.ningchengxian.gov.cn/zwgk/zwdt/tzgg/
åˆ†é¡µ: index.html (p1), index_1.html (p2), ... index_{N-1}.html
è¯¦æƒ…: ./202606/t20260604_2774927.html
é    Nz/root/gov_crawler)Ú
fetch_pageÚ
clean_htmlu   å®�åŸŽåŽ¿é€šçŸ¥å…¬å‘Šz.http://www.ningchengxian.gov.cn/zwgk/zwdt/tzggé   z
2023-06-01Ú	SEARCH_DBz/root/search.dbc                 ó  — | st        d«       y t        j                  t        «      }|j	                  d«       |j	                  d«       d\  }}| D ]Ô  }	 |j	                  d|j                  dd«      d d |j                  d	d«      |j                  d	d«      |j                  d
«      xs dd d |j                  d«      xs dd d |j                  d«      xs dd d |j                  dd«      dd|j                  d«      xs dd d f
«       |j                  dkD  r|dz  }n|dz  }ŒÖ |j                  «        |j	                  dt        f«       |j                  «        |j                  «        t        d|› d|› d�«       y #  |dz  }Y �Œ;xY w)Nu     â�­ æ— æ•°æ�®zPRAGMA journal_mode=WALzPRAGMA synchronous=NORMAL)r   r   zÑINSERT OR IGNORE INTO gov_raw
                (site_name, source_url, page_url, title, publish_date,
                 summary, content, status, category, tags)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)Ú	site_nameÚ éÈ   ÚurlÚtitleiô  Úpub_dateé
   ÚsummaryÚcontentÚactiveÚtagséd   r   é   z·INSERT INTO gov_search(rowid, title, site_name, summary) SELECT r.id, r.title, r.site_name, r.summary FROM gov_raw r WHERE r.id NOT IN (SELECT rowid FROM gov_search) AND r.site_name=?u     ðŸ’¾ å…¥åº“: æ–°å¢žu   , è·³è¿‡u   , FTSå·²å�Œæ­¥)
ÚprintÚsqlite3Úconnectr   ÚexecuteÚgetÚtotal_changesÚcommitÚ	SITE_NAMEÚclose)ÚitemsÚlabelÚdbÚokÚskipÚitems         ú(/root/gov_crawler/crawl_ningchengxian.pyÚinsert_to_dbr%      sš  € ÙÜÐÔ ØÜ	�‰œÓ	#€BØ‡J�JÐ(Ô)Ø‡J�JÐ*Ô+Ø�H€BˆØò ˆð	Ø�J‰Jð 5ð —‘˜ RÓ(¨¨#Ð.Ø—‘˜˜rÓ"Ø—‘˜˜rÓ"Ø—‘˜'Ó"Ò( b¨$¨3Ð/Ø—‘˜*Ó%Ò+¨¨S¨bÐ1Ø—‘˜)Ó$Ò*¨¨D¨SÐ1Ø—‘˜ 2Ó&Ø˜"˜tŸx™x¨Ó/Ò5°2°t¸Ð<ð	7ôð ×Ñ !Ò#Ø�a‘‘à˜‘	�øð%ð* ‡I�I„KØ‡J�Jð  Iô  LUð  KWô  XØ‡I�I„KØ‡H�H„JÜ	Ð! "  X¨d¨V°>Ð
BÕCøð	Ø�A‰I‹Dús   ÁCFÆFc                 ó<   — | dk(  r	t         › d�S t         › d| dz
  › d�S )Nr   z/index.htmlz/index_z.html)Ú	LIST_BASE)Úpages    r$   Úget_list_urlr)   8   s-   € Øˆq‚yÜ�˜KÐ(Ð(Üˆ[˜  Q¡˜x uÐ-Ð-ó    c                 óŠ  — g }t        j                  dt         j                  «      }|j                  | «      D ]ˆ  }t        dz   |j                  d«      j                  d«      z   }|j                  d«      }t        j                  dd|j                  d«      «      j                  «       }|sŒu|j                  |||f«       ŒŠ |S )	u)   æ��å�–åˆ—è¡¨é¡µçš„ (title, url, date_str)z_<a[^>]*href="(\./\d{6}/t[^"]+\.html)"[^>]*>\s*<span>(\d{4}-\d{2}-\d{2})</span>\s*([\s\S]+?)</a>ú/r   z./é   ú<[^>]+>r	   é   )
ÚreÚcompileÚDOTALLÚfinditerr'   ÚgroupÚlstripÚsubÚstripÚappend)Úhtmlr   ÚpatternÚmÚhrefÚdate_strr   s          r$   Ú
parse_listr>   =   s­   € à€Eä�j‰jð	ô 	�	‰	ó	€Gð ×Ñ˜dÓ#ò 2ˆÜ˜3‰ §¡¨£×!2Ñ!2°4Ó!8Ñ8ˆØ—7‘7˜1“:ˆÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆÚØ�L‰L˜%  xÐ0Õ1ð2ð €Lr*   c                 óT  — t        | d¬«      }|syd}t        j                  d|t        j                  «      }|r4t        j                  dd|j                  d«      «      j                  «       }d}t        j                  d|t        j                  «      }|r|j                  d«      }d}t        j                  d	|t        j                  «      }|rÈ|j                  d«      j                  «       }t        j                  d
d|t        j                  t        j                  z  ¬«      }t        j                  dd|t        j                  t        j                  z  ¬«      }t        j                  dd|«      }t        j                  dd|«      }t        |«      }|xs d|xs d|xs dfS )u*   èŽ·å�–è¯¦æƒ…é¡µçš„æ ‡é¢˜ã€�æ­£æ–‡ã€�æ—¥æœŸúutf-8©Úencoding)NNNr	   z<h3[^>]*>(.*?)</h3>r.   r   zE<meta[^>]*name=["\']PubDate["\'][^>]*content=["\'](\d{4}-\d{2}-\d{2})z2<div\s+class="content"\s+id="fsz"[^>]*>(.*?)</div>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>z)<div\s+class="trs_editor_view[^"]*"[^>]*>z\s*style="[^"]*"N)	r   r0   Úsearchr2   r6   r4   r7   ÚIr   )r   r9   r   r;   r   r   s         r$   Úfetch_detailrF   O   sM  € ä�c GÔ,€DÙØà€EÜ
�	‰	Ð(¨$´·	±	Ó:€AÙÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆà€HÜ
�	‰	ÐZÐ\`Ôbd×bfÑbfÓg€AÙØ—7‘7˜1“:ˆà€GÜ
�	‰	ÐGÈÌrÏyÉyÓY€AÙØ—'‘'˜!“*×"Ñ"Ó$ˆÜ—&‘&Ð5°r¸7Ì"Ï)É)ÔTV×TXÑTXÉ.ÔYˆÜ—&‘&Ð3°R¸ÌÏ	É	ÔRT×RVÑRVÉÔWˆä—&‘&ÐEÀrÈ7ÓSˆÜ—&‘&Ð,¨b°'Ó:ˆÜ˜WÓ%ˆØŠ=�D˜'š/ T¨8Ò+;°tÐ;Ð;r*   c                  óT  — t        dd› dt        › dd› �«       g } t        dt        dz   «      D ]œ  }t	        |«      }t        d|› d|› d�dd	¬
«       t        |d¬«      }|st        d«        n`t        |«      }|st        d«        nFt        dt        |«      › d�«       | j                  |«       t        |«      dk  sŒ‘t        d«        n t        dt        | «      › d�«       | st        d«       y g t        «       }}t        | d«      D ]õ  \  }\  }}}	||v rŒ|j                  |«       |	r
|	t        k  rŒ,t        d|› dt        | «      › d|d d › d�dd	¬
«       t        |«      \  }
}}|
r|
}|r|}	t        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 «       t        d!t        |«      › d�«       y )"Nú
z2==================================================u   
ðŸ�  r   u
   
ðŸ“„ ç¬¬ u    é¡µ (z)...ú T)ÚendÚflushr@   rA   u   â�Œ è¯·æ±‚å¤±è´¥u   0 æ�¡u   âœ… u    æ�¡é   u
     (æœ«é¡µ)u   
ðŸ“Š åˆ—è¡¨æ€»è®¡: u   âš ï¸� æ— æ•°æ�®z  [r,   z] é2   z...r.   r	   i,  z\s+)r   r   r   r   r   r   r   g333333Ó?Úningchengxianu   
âœ… å®Œæˆ�! å…± )r   r   ÚrangeÚ	MAX_PAGESr)   r   r>   ÚlenÚextendÚsetÚ	enumerateÚaddÚTHREE_YEARS_AGOrF   r0   r6   r7   r8   ÚtimeÚsleepr%   )Úall_listr(   r   r9   r   Ú	all_itemsÚseenÚir   r=   Údtr   r   r   s                 r$   Úmainr^   k   s4  € Ü	ˆBˆvˆh�gœi˜[¨¨6¨(Ð
3Ô4à€HÜ�aœ Q™Ó'ò ˆÜ˜4Ó ˆÜ�˜D˜6 ¨ u¨DÐ1°sÀ$ÕGÜ˜#¨Ô0ˆÙÜÐ$Ô%ÙÜ˜4Ó ˆÙÜ�'ŒNÙÜ�”S˜“Z�L Ð%Ô&Ø�‰˜Ôäˆu‹:˜‹?Ü�,ÔÙð!ô$ 
Ð!¤# h£- °Ð
5Ô6ÙÜÐ Ô!Øð œ#›%ˆt€IÜ%.¨x¸Ó%;ò Ñ!ˆÑ!ˆE�3˜Ø�$‰;ØØ�‰�ŒÙ˜¤?Ò2Øä��A�3�aœ˜H›� b¨¨s°¨¨°CÐ8¸cÈÕNÜ ,¨SÓ 1ÑˆˆG�XÙØˆEÙØˆHä—&‘&˜ S¨'ª-°RÓ8×>Ñ>Ó@ÀÀ#ÐFˆÜ—&‘&˜  gÓ.ˆà×ÑÜ"¨U¸3Ø’} "°(².¸bØ¬	ñ
ô 	ô
 	��X�JÐÔ Ü�
‰
�3�ð/ñ4 Ü�Y Ô0Ü	Ðœs 9›~Ð.¨dÐ
3Õ4r*   Ú__main__u   â�± è€—æ—¶: z.1fÚs)Únx)Ú__doc__ÚsysÚosr0   rW   ÚpathÚinsertÚcrawler_libr   r   r   r'   rP   rV   Úgetenvr   r   r%   r)   r>   rF   r^   Ú__name__Út0r   © r*   r$   ú<module>rl      s²   ðñ÷ × Ø ‡�‡��Ð&Ô 'ß .à#€	Ø<€	Ø€	Ø€ØˆB�I‰I�kÐ#4Ó5€	ã Û 	ó!DòF.ò
ò$<ò895ðv ˆzÒØ	ˆ�‰‹€BÙ„FÙ	ˆL˜˜Ÿ™› R™¨Ð,¨AÐ
.Õ/ð r*   