Ë
    5ß©jÔ+  ã                   óÀ  — 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mZmZ ej                  j                  dej                  j                  ej                  j                  e«      «      «       ddlmZ ddlZddlmZ dZ eej*                  «      D ]=  \  ZZedk(  sŒedz    eej*                  «      k  sŒ% eej*                  edz      «      Z n e� ed ee«      z   «       d	Zd
ZdZde› �ZdZ dZ! ejD                  ejF                  «       ed¬«      z
  jI                  d«      Z%dedœZ&d d„Z'd!d„Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1e2dk(  r e1«        yy)"u  
å¯Œæ°‘åŽ¿äººæ°‘æ”¿åºœ-å…¬ç¤ºå…¬å‘Š çˆ¬è™«
CMS: ZCMS 2.5.28063 (æ˜†æ˜Žä¿¡æ�¯æ¸¯æŠ€æœ¯æ”¯æŒ�)
åˆ—è¡¨: /zfxxgk/fdzdgknr/gsgg/ (index.shtml), index_N.shtml (N=2..104)
è¯¦æƒ…: /c/YYYY-MM-DD/NNNNNNN.shtml
æ³¨æ„�: DNSä¸�å�¯è¾¾, éœ€ IP 116.52.6.87 + Host header ç»•è¿‡
é    N)ÚdatetimeÚtimezoneÚ	timedelta)Úpush_to_searchdb)ÚBeautifulSoupz--pagesé   z[AutoPg] max_pages=u   å¯Œæ°‘åŽ¿-å…¬ç¤ºå…¬å‘Šz116.52.6.87zwww.kmfm.gov.cnúhttp://z/zfxxgk/fdzdgknr/gsggéh   iG  )Údaysz%Y-%m-%dzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36)z
User-AgentÚHostc                 óÊ  — ddl }t        t        | «      d«      }|j                  d«      D ]L  }|j	                  dd«      }|sŒ|j                  d«      rŒ*|r|j                  j                  ||«      n||d<   ŒN |j                  d«      D ]L  }|j	                  d	d«      }|sŒ|j                  d
«      rŒ*|r|j                  j                  ||«      n||d	<   ŒN t        |«      S )uA   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼Œä»…å°†ç›¸å¯¹é“¾æŽ¥/å›¾ç‰‡è½¬ç»�å¯¹ URLr   Núhtml.parserÚaÚhrefÚ )ÚhttpÚ
javascriptú#ÚimgÚsrc)r   z//zdata:)Úurllib.parser   ÚstrÚfind_allÚgetÚ
startswithÚparseÚurljoin)ÚtableÚbase_urlÚurllibÚtblr   r   r   r   s           úcrawl_kmfm_gsgg.pyÚhtml_table_to_htmlr#   +   sÐ   € ãÜ
œ˜E›
 MÓ
2€CØ�\‰\˜#Óò SˆØ�u‰u�V˜RÓ ˆÚ˜Ÿ™Ð(CÕDÙ@H˜Ÿ™×,Ñ,¨X°tÔ<ÈdˆAˆfŠIðSð �|‰|˜EÓ"ò RˆØ�g‰g�e˜RÓ ˆÚ�s—~‘~Ð&=Õ>Ù@H˜Ÿ™×-Ñ-¨h¸Ô<ÈcˆC�ŠJðRô ˆs‹8€Oó    c                 ó  — t        d«      D ]3  }	 t        j                  | t        |¬«      }d|_        |j
                  c S  y# t        $ r<}|dk  rt        j                  d«       nt        d| › d|› �«       Y d}~ yY d}~Œwd}~ww xY w)u   é€šè¿‡ IP + Host header æŠ“å�–é   )ÚheadersÚtimeoutzutf-8é   u     [WARN] æŠ“å�–å¤±è´¥ z: N)
ÚrangeÚrequestsr   ÚHEADERSÚencodingÚtextÚ	ExceptionÚtimeÚsleepÚprint)Úurlr(   ÚattemptÚrÚes        r"   Úfetchr7   8   s~   € ä˜“8ò 
ˆð		Ü—‘˜S¬'¸7ÔCˆAØ ˆAŒJØ—6‘6ŠMñ	
øô
 ò 	Ø˜Š{Ü—
‘
˜1•äÐ.¨s¨e°2°a°SÐ9Ô:Ýô ûð	ús   �.AÁ	BÁ,BÂBc                 óZ   — | dk(  rt         dz   }t        |z   S t         › d| › d�}t        |z   S )u   æž„å»ºåˆ—è¡¨é¡µURLr   ú/z/index_z.shtml)Ú	LIST_PATHÚBASE_URL)ÚpageÚpaths     r"   Úmake_list_urlr>   G   s<   € àˆq‚yÜ˜3‰ˆô �d‰?Ðô �˜G D 6¨Ð0ˆÜ�d‰?Ðr$   c                 ó¾  — g }t        | d«      }|j                  dd¬«      D �]7  }|j                  dd¬«      }|sŒ|j                  dd¬«      }|sŒ0|j                  dd	¬
«      }|sŒF|d   j                  «       }|j	                  dd	¬«      }t        j                  dd|«      j                  «       }|j                  d«      sdt        z   |z   }t        |«      dk  rŒ½d}	|j                  dd¬«      }
|
rP|
j                  d«      }|r=|j                  d«      r,t        j                  d|d   «      }|r|j                  d«      }	|j                  |||	f«       �Œ: |S )u1   è§£æž�åˆ—è¡¨é¡µ, è¿”å›ž [(title, url, date), ...]r   Údivzdata-table-item©Úclass_zitem-urlÚpÚw659r   T©r   r   ú ©Ústripú\s+r   r	   é   r   Úw80Útitleú(\d{4}-\d{2}-\d{2})r   )r   r   ÚfindrH   Úget_textÚreÚsubr   ÚDOMAINÚlenr   ÚsearchÚgroupÚappend)ÚhtmlÚitemsÚsoupÚitem_divÚurl_divÚtitle_aÚa_tagr   rL   ÚdateÚdate_pÚdate_aÚms                r"   Úparse_list_pagerb   P   s[  € à€EÜ˜˜}Ó-€Dà—M‘M %Ð0A�MÓBó !*ˆØ—-‘- ¨j�-Ó9ˆÙØð —,‘,˜s¨6�,Ó2ˆÙØØ—‘˜S t�Ó,ˆÙØà�V‰}×"Ñ"Ó$ˆØ—‘˜s¨$�Ó/ˆÜ—‘�v˜s EÓ*×0Ñ0Ó2ˆà�‰˜vÔ&ØœvÑ%¨Ñ,ˆDäˆu‹:˜Š>Øð ˆØ—‘˜c¨%�Ó0ˆÙØ—[‘[ Ó%ˆFÙ˜&Ÿ*™* WÔ-Ü—I‘IÐ4°f¸W±oÓF�ÙØŸ7™7 1›:�Dà�‰�e˜T 4Ð(Ö)ðC!*ðF €Lr$   c                 ó`  — t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  dd| «      } t        j                  d	d
| «      j                  «       S )u'   æ¸…æ´— span ç¢Žç‰‡å¯¼è‡´çš„é—´è·�é—®é¢˜z3(?<=[\u4e00-\u9fff])[ \t\u3000]+(?=[\u4e00-\u9fff])r   z&(?<=[\u4e00-\u9fff])[ \t\u3000]+(?=\d)z&(?<=\d)[ \t\u3000]+(?=[\u4e00-\u9fff])u&   \s+([ï¼Œã€‚ã€�ï¼›ï¼šï¼Ÿï¼�)ã€‘ã€�ã€‹])z\1u   ([ï¼ˆã€�ã€Œã€Š])\s+z(?<=\d)\s+(?=\d)rI   rF   )rP   rQ   rH   )r.   s    r"   Ú_clean_span_spacesrd   {   s�   € ä�6‰6ÐHÈ"ÈdÓS€DÜ�6‰6Ð;¸RÀÓF€DÜ�6‰6Ð;¸RÀÓF€DÜ�6‰6Ð;¸UÀDÓI€DÜ�6‰6Ð(¨%°Ó6€DÜ�6‰6Ð% r¨4Ó0€DÜ�6‰6�&˜#˜tÓ$×*Ñ*Ó,Ð,r$   c                 ó€   — | j                  d«      r| S | j                  d«      rdt        z   | z   S dt        z   dz   | z   S )u   å°†ç›¸å¯¹URLè½¬ä¸ºç»�å¯¹URLr   r9   r	   )r   rR   ©r   s    r"   Ú	_make_urlrg   …   sD   € à
‡~�~�fÔØˆ
Ø
‡~�~�cÔØœ6Ñ! CÑ'Ð'Ø”vÑ Ñ# cÑ)Ð)r$   c                 óp   ‡— | j                  «       j                  d«      d   Št        ˆfd„dD «       «      S )u   åˆ¤æ–­æ˜¯å�¦é™„ä»¶é“¾æŽ¥ú?r   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w)N)Úendswith)Ú.0r6   Úhs     €r"   ú	<genexpr>z&_is_attachment_link.<locals>.<genexpr>‘   s   øè ø€ Òx ˆq�z‰z˜!�}Ñxùs   ƒ)
z.pdfz.docz.docxz.xlsz.xlsxz.zipz.rarz.txtz.wpsz.et)ÚlowerÚsplitÚany)r   rm   s    @r"   Ú_is_attachment_linkrr   Ž   s0   ø€ à�
‰
‹×Ñ˜3Ó Ñ"€AÜÓxÐ&wÔxÓxÐxr$   c                 ó   — d| v xs d| v S )u   åˆ¤æ–­æ˜¯å�¦æ–‡ä»¶ç±»åž‹å›¾æ ‡z/images/filetype/z
/filetype/© rf   s    r"   Ú_is_filetype_iconru   ”   s   € à #Ð%Ò<¨¸Ð)<Ð<r$   c           
      óB  — g }| j                   D �]V  }t        |dd«      }|dk(  r!t        ||«      }|sŒ%|j                  |«       Œ7|dk(  �r‹|j	                  d«      rŒOd}g }g }|j                  dd¬«      D ]L  }	t        |	d	   «      sŒd}|	j                  d
d¬«      }
t        |	d	   «      }|j                  d|
› d|› d�«       ŒN |j                  d«      D ]V  }|j                  dd«      }|sŒt        |«      rŒ$|j                  dd«      }|j                  d|› dt        |«      › d�«       ŒX |r|D ]  }|j                  |dz   «       Œ �Œ@|D ]  }|j                  |dz   «       Œ |j                  d
d¬«      }t        |«      }t        j                  dd|«      }|s�Œ”t        |«      dkD  s�Œ¤|j                  |«       |j                  d«       �ŒÈ|��ŒÌt        |«      j!                  «       }|s�Œét        |«      dkD  s�Œùt        j                  dd|«      }t        j                  dd|«      }|j                  |j!                  «       «       |j                  d«       �ŒY dj#                  |«      j!                  «       }t        j                  dd|«      }|S )u&   ä»Ž activity div ä¸­æ��å�–æ­£æ–‡å†…å®¹ÚnameNr   rC   Fr   TrE   r   rF   rG   ú[z](ú)r   r   r   Úaltz![z

ú&#\d+;r&   é
   z<[^>]+>z\n{4,})ÚchildrenÚgetattrr#   rV   Úfind_parentr   rr   rO   rg   r   ru   rd   rP   rQ   rS   r   rH   Újoin)Úactivity_divÚpage_urlÚpartsÚchildrw   Útbl_htmlÚhas_attachmentÚattach_textsÚmeaningful_imagesr]   Úa_textÚ	full_hrefr   r   rz   ÚatÚmiÚtxtÚtÚresults                       r"   Úextract_contentr�   ™   s  € à€Eà×&Ñ&ó 6%ˆÜ�u˜f dÓ+ˆà�7Š?Ü)¨%°Ó:ˆHÚØ—‘˜XÕ&Ø�S‹[à× Ñ  Ô)Øð #ˆNØˆLØ "ÐàŸ™¨°$˜Ó7ò D�Ü& u¨V¡}Õ5Ø%)�NØ"Ÿ^™^¨C°t˜^Ó<�FÜ )¨%°©-Ó 8�IØ ×'Ñ'¨!¨F¨8°2°i°[ÀÐ(BÕCðDð —~‘~ eÓ,ò L�Ø—g‘g˜e RÓ(�ÚÔ0°Õ5ØŸ'™' %¨Ó,�CØ%×,Ñ,¨r°#°°b¼À3»Ð8HÈÐ-JÕKð	Lñ Ø&ò .�BØ—L‘L  f¡Õ-ð.áð (ò *�Ø—‘˜R &™[Õ)ð*ð —.‘. ¨D�.Ó1ˆCÜ$ SÓ)ˆCÜ—&‘&˜ B¨Ó,ˆCÛ”s˜3“x !”|Ø—‘˜SÔ!Ø—‘˜VÖ$àŠ\Ü�E“
× Ñ Ó"ˆAÛ”S˜“V˜b”[Ü—F‘F˜9 b¨!Ó,�Ü—F‘F˜: r¨1Ó-�Ø—‘˜QŸW™W›YÔ'Ø—‘˜VÖ$ðm6%ðp �W‰W�U‹^×!Ñ!Ó#€FÜ�V‰V�I˜v vÓ.€FØ€Mr$   c                 ó¬  — t        | «      }|syt        |d«      }d}|j                  dddi¬«      }|r |j                  dd«      j	                  «       }|s7|j                  dd	di¬«      }|r |j                  dd«      j	                  «       }|sJ|j                  d
«      }|r7|j                  d¬«      }t        j                  dd|«      j	                  «       }t        j                  dd|«      }d}|j                  dddi¬«      }	|	r;|	j                  dd«      }
t        j                  d|
«      }|r|j                  d«      }|sL|j                  dd¬«      }|r7t        j                  d|j                  «       «      }|r|j                  d«      }d}|j                  dd¬«      }|r!|j                  dd¬«      }|rt        || «      }|s|d|fS |||fS )u   è§£æž�è¯¦æƒ…é¡µ)NNNr   r   Úmetarw   ÚArticleTitle)ÚattrsÚcontentÚpropertyrL   TrG   u%   _å…¬ç¤ºå…¬å‘Š_å¯Œæ°‘åŽ¿äººæ°‘æ”¿åºœ.*r{   ÚPubDaterM   r   r@   zactivity-inforA   Úactivity)r7   r   rN   r   rH   rO   rP   rQ   rT   rU   r�   )r3   rW   rY   rL   r’   Úmeta_pÚ	title_tagrŽ   r^   Úmeta_dÚdra   Úactivity_infor•   Úcontent_divr˜   s                   r"   Úparse_detailrŸ   Ú   sÔ  € ä�‹:€DÙØä˜˜}Ó-€Dð €EØ�9‰9�V F¨NÐ#;ˆ9Ó<€DÙØ—‘˜ BÓ'×-Ñ-Ó/ˆÙØ—‘˜6¨*°nÐ)E�ÓFˆÙØ—J‘J˜y¨"Ó-×3Ñ3Ó5ˆEÙØ—I‘I˜gÓ&ˆ	ÙØ×"Ñ"¨Ð"Ó.ˆAÜ—F‘FÐCÀRÈÓK×QÑQÓSˆEô �F‰F�9˜b %Ó(€Eð €DØ�Y‰Y�v f¨iÐ%8ˆYÓ9€FÙØ�J‰J�y "Ó%ˆÜ�I‰IÐ,¨aÓ0ˆÙØ—7‘7˜1“:ˆDÙØŸ	™	 %°˜	Ó@ˆÙÜ—	‘	Ð0°-×2HÑ2HÓ2JÓKˆAÙØ—w‘w˜q“z�ð €GØ—)‘)˜E¨)�)Ó4€KÙØ×#Ñ# E°*Ð#Ó=ˆÙÜ% h°Ó4ˆGáØ�b˜$ˆÐà�'˜4ÐÐr$   c                  ód  — t         rt        t        t         «      nt        } t        dt        › d�«       t        dt        › d| › d�«       g }t        d| dz   «      D ]“  }t        |«      }t        d|› d| › d	|› �«       t        |«      }|st        d
«        nZt        |«      }|st        d«        n@t        dt        |«      › d�«       |j                  |«       t        j                  d«       Œ• t        dt        |«      › d�«       |st        d«       y |d   d   r|D �cg c]  }|d   t        k\  sŒ|‘Œ c}n|}t        dt        |«      › dt        |«      t        |«      z
  › d�«       g }t        |«      D ]ñ  \  }	\  }
}}t        d|	dz   › dt        |«      › d|
d d › d�dd¬«       t        |«      \  }}}|xs |
}|xs |}|rt        |j!                  «       «      dk  rt        d«       Œv|d d  j!                  «       }|j#                  t        |||||d!œ«       t        d"t        |«      › d#�«       |	dz   d$z  dk(  sŒÉt        d%|	dz   › dt        |«      › d&t        |«      › �«       Œó |r%t        d't        |«      › d�«       t%        |d(«       nt        d)«       t        d*«       y c c}w )+Nz=== z ===u     æ€»é¡µæ•°: u   , æœ¬æ¬¡æŠ“å�–: u    é¡µr   u     ç¬¬ r9   u    é¡µ: u       æ— æ³•èŽ·å�–, å�œæ­¢ç¿»é¡µu       ç©ºåˆ—è¡¨, å�œæ­¢ç¿»é¡µu       æ‰¾åˆ° u    æ�¡g333333Ó?u   
  åˆ—è¡¨æ€»è®¡: u    æ�¡
u     æ— æ•°æ�®r   r)   u     è¿‘3å¹´: u    æ�¡ (è¿‡æ»¤æŽ‰ ry   z  [z] é(   z...rF   T)ÚendÚflushr|   u   âš  æ— æ­£æ–‡éÈ   )Ú	site_namerL   r3   r•   ÚsummaryÚpub_dateu   âœ… (u   å­—)é   u
     è¿›åº¦: u   , å·²å…¥åº“: u
   
  å…¥åº“ Ú	kmfm_gsggu     æ— æ–°æ•°æ�®å…¥åº“u   å®Œæˆ�)Ú_MAX_PGÚminÚTOTAL_PAGESr2   Ú	SITE_NAMEr*   r>   r7   rb   rS   Úextendr0   r1   ÚCUTOFFÚ	enumeraterŸ   rH   rV   r   )Úpages_to_fetchÚ	all_itemsr<   Úlist_urlrW   rX   ÚiÚrecentÚresultsÚidxrL   r3   r^   Údtr•   ÚddÚfinal_titleÚ
final_dater¦   s                      r"   Úmainr¼     sµ  € å29”Sœ¤gÔ.¼{€Nä	ˆD”�˜4Ð
 Ô!Ü	ˆMœ+˜Ð&6°~Ð6FÀdÐ
KÔLà€IÜ�a˜¨!Ñ+Ó,ò ˆÜ  Ó&ˆÜ��t�f˜A˜nÐ-¨V°H°:Ð>Ô?ä�X‹ˆÙÜÐ2Ô4Ùä Ó%ˆÙÜÐ/Ô1Ùä�œC ›J˜< tÐ,Ô-Ø×Ñ˜ÔÜ�
‰
�3�ð!ô$ 
Ðœs 9›~Ð.¨fÐ
5Ô6áÜˆmÔØð :CÀ1¹Àaº˜Ö5�A a¨¡d¬f£nŠaÓ5Èi€FÜ	ˆKœ˜F›�}Ð$4´S¸³^ÄCÈÃKÑ5OÐ4PÐPQÐ
RÔSð €GÜ#,¨VÓ#4ò QÑˆÑˆe�S˜$Ü��C˜‘E�7˜!œC ›K˜=¨¨5°°"¨:¨,°cÐ:ÀÈ4ÕPä& sÓ+‰ˆˆG�RØ’k˜EˆØ’Z˜4ˆ
áœ#˜gŸm™m›oÓ.°Ò3Ü�/Ô"àà˜$˜3�-×%Ñ%Ó'ˆØ�‰Ü"Ø ØØØØ"ñ
ô 	ô 	�”c˜'“l�^ 4Ð(Ô)à�!‰G�r‰>˜QÓÜ�J˜s 1™u˜g Q¤s¨6£{ m°=ÄÀWÃÀÐOÕPð1Qñ4 Ü�œC ›L˜>¨Ð.Ô/Ü˜ +Õ.äÐ$Ô%ä	ˆ(…OùòK 6s   Ä#J-Ä5J-Ú__main__)r   )r¨   )3Ú__doc__ÚsysÚosrP   r0   Újsonr   r   r   r=   ÚinsertÚdirnameÚabspathÚ__file__Úcrawler_libr   r+   Úbs4r   rª   r°   Úargvr´   r   rS   Úintr2   r   r­   ÚBASE_IPrR   r;   r:   r¬   ÚnowÚutcÚstrftimer¯   r,   r#   r7   r>   rb   rd   rg   rr   ru   r�   rŸ   r¼   Ú__name__rt   r$   r"   ú<module>rÏ      so  ðñ÷ × Ó ß 2Ñ 2à ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=Ô >Ý (ã Ý ð €Ù�c—h‘hÓò �D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ù�c—h‘h˜q 1™u‘oÓ&ˆÙðð ÐÙ	Ð
¡# g£,Ñ
.Ô/à$€	Ø
€Ø	€Ø�W�IÐ€Ø#€	Ø€Ø
ˆ(�,‰,�x—|‘|Ó
$¡y°eÔ'<Ñ
<×	FÑ	FÀzÓ	R€ð DØñ€óóòò(òV-ò*òyò=ò
>òB4 ònFðR ˆzÒÙ…Fð r$   