Ë
    ¸¬ujÃ  ã                   ó|  — 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ZddlmZ ddl	m	Z	m
Z
  ej                  dd«      ZdZdZ e	j                  «        e
d	¬
«      z
  j!                  d«      ZdZdddœZ ej(                  «       Zej,                  j/                  e«       ddlZd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uˆ   æ¹›æ±Ÿå¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€ â€” è¡Œæ”¿å…¬ç¤ºçˆ¬è™«
https://www.zhanjiang.gov.cn/zjsfw/bmdh/sthjj/zwgk/xzgs/
Custom CMS, index_N.htmlåˆ†é¡µ
é    N)ÚBeautifulSoup)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/root/search.dbz8https://www.zhanjiang.gov.cn/zjsfw/bmdh/sthjj/zwgk/xzgs/u%   æ¹›æ±Ÿå¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€-è¡Œæ”¿å…¬ç¤ºiG  )Údaysz%Y-%m-%déd   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36zhttps://www.zhanjiang.gov.cn/)z
User-AgentÚRefererc                  óN  — 	 t        j                  t        «      } | j                  «       }|j	                  dt
        f«       |j                  «       D �ch c]  }|d   ’Œ	 }}| j                  «        |S c c}w # t        $ r"}t        d|› �«       t        «       cY d }~S d }~ww xY w)Nz.SELECT page_url FROM gov_raw WHERE site_name=?r   u   [WARN] æ— æ³•æŸ¥è¯¢å·²æœ‰URL: )Úsqlite3ÚconnectÚDB_PATHÚcursorÚexecuteÚ	SITE_NAMEÚfetchallÚcloseÚ	ExceptionÚprintÚset)ÚconnÚcÚrowÚexistingÚes        ú$/root/gov_crawler/crawl_zhanjiang.pyÚget_existing_urlsr      sŠ   € ð	Ü�‰œwÓ'ˆØ�K‰K‹MˆØ	�	‰	ÐBÄYÀLÔQØ&'§j¡j£lÖ3˜s�C˜“FÐ3ˆÐ3Ø�
‰
ŒØˆùò 4øô ò ÜÐ.¨q¨cÐ2Ô3Ü‹u�ûðús0   ‚AA9 ÁA4Á A9 Á4A9 Á9	B$ÂBÂB$ÂB$c                 óŠ  — 	 t        j                  t        «      }|j                  «       }|j	                  d| j                  «       ||j                  «       |j                  «       t        f«       |j                  }|j                  «        |j                  «        |S # t        $ r}t        d|› d|› �«       Y d }~yd }~ww xY w)Nz—
            INSERT OR IGNORE INTO gov_raw 
            (title, publish_date, content, page_url, site_name)
            VALUES (?, ?, ?, ?, ?)
        u   [ERROR] å†™å…¥å¤±è´¥ ú: r   )r   r   r   r   r   Ústripr   ÚrowcountÚcommitr   r   r   )ÚtitleÚdate_strÚcontentÚpage_urlr   r   Úaffectedr   s           r   Ú
store_itemr'   '   s    € ðÜ�‰œwÓ'ˆØ�K‰K‹MˆØ	�	‰	ð ð �k‰k‹m˜X w§}¡}£¸¿¹Ó8HÌ)ÐTô		Vð
 —:‘:ˆØ�‰ŒØ�
‰
ŒØˆøÜò ÜÐ% h Z¨r°!°Ð5Ô6Üûðús   ‚BB Â	CÂ'B=Â=Cc                 óâ  — t        | d«      }g }|j                  d«      }|D ]Ê  }|j                  d«      }|j                  dd¬«      }|r|sŒ,|j                  dd«      }|j	                  d	¬
«      }	|j	                  d	¬
«      }
|j                  d«      r|}nA|j                  d«      rd|› �}n*t        j                  d«      dz   |j                  d«      z   }|j                  |	|
|f«       ŒÌ |S )u   è§£æž�åˆ—è¡¨é¡µúhtml.parserz
ul.list liÚaÚspanÚtime©Úclass_ÚhrefÚ T©r   Úhttpú/zhttps://www.zhanjiang.gov.cnz./)
r   ÚselectÚfindÚgetÚget_textÚ
startswithÚBASE_URLÚrstripÚlstripÚappend)ÚhtmlÚpage_numÚsoupÚitemsÚli_tagsÚliÚa_tagÚ	time_spanr/   r"   r#   r%   s               r   Úparse_list_pagerE   8   sð   € ä˜˜}Ó-€DØ€EØ�k‰k˜,Ó'€GØò 2ˆØ—‘˜“ˆØ—G‘G˜F¨6�GÓ2ˆ	Ù™IØØ�y‰y˜ Ó$ˆØ—‘ T�Ó*ˆØ×%Ñ%¨DÐ%Ó1ˆð �?‰?˜6Ô"Ø‰HØ�_‰_˜SÔ!Ø5°d°VÐ<‰Hä—‘ sÓ+¨cÑ1°D·K±KÀÓ4EÑEˆHà�‰�e˜X xÐ0Õ1ð#2ð& €Ló    c                 óè  — 	 t         j                  | d¬«      }d|_        |j                  dk7  ryt	        |j
                  d«      }d}|j                  dd	d
i¬«      }|r|j                  dd«      }|s%|j                  d«      }|r|j                  d¬«      }d}|j                  dd	di¬«      }|r#|j                  dd«      j                  «       dd }d}|j                  dd¬«      }	|	r9|	j                  d¬«      }
t        j                  dd|
«      j                  «       }
|
}d}|j                  d«      }|rt        |«      }|xs d||fS # t        $ r}t        d| › d|› �«       Y d}~yd}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹é   ©Útimeoutúutf-8éÈ   )NNNr)   r0   ÚmetaÚnameÚArticleTitle)Úattrsr$   Úh3Tr1   ÚPubDateNé
   r+   Úlyr-   u   ^æ�¥æº�[ï¼š:]zdiv.articleu   [ERROR] èŽ·å�–è¯¦æƒ…å¤±è´¥ r   )Úsessionr6   ÚencodingÚstatus_coder   Útextr5   r7   r   ÚreÚsubÚ
select_oneÚstrr   r   )ÚurlÚrespr?   r"   Ú
meta_titlerQ   r#   Ú	meta_dateÚsourceÚly_spanÚsrcr$   Úarticle_divr   s                 r   Úfetch_detailre   R   s‚  € ð) Ü�{‰{˜3¨ˆ{Ó+ˆØˆŒØ×Ñ˜sÒ"Ø#Ü˜TŸY™Y¨Ó6ˆð ˆØ—Y‘Y˜v¨f°nÐ-E�YÓFˆ
ÙØ—N‘N 9¨bÓ1ˆEÙØ—‘˜4“ˆBÙØŸ™¨$˜Ó/�ð ˆØ—I‘I˜f¨V°YÐ,?�IÓ@ˆ	ÙØ —}‘} Y°Ó3×9Ñ9Ó;¸C¸RÐ@ˆHð ˆØ—)‘)˜F¨4�)Ó0ˆÙØ×"Ñ"¨Ð"Ó.ˆCÜ—&‘&Ð)¨2¨sÓ3×9Ñ9Ó;ˆCØˆFð ˆØ—o‘o mÓ4ˆÙÜ˜+Ó&ˆGàŠ{˜˜H gÐ-Ð-øäò  ÜÐ+¨C¨5°°1°#Ð6Ô7Üûð ús   ‚-E °DE Å	E1ÅE,Å,E1c            
      óÂ  — t        d«       t        dt        › �«       t        «       } t        dt        | «      › �«       d}d}d}t	        t
        «      D �]‰  }|r �n„|dk(  rt        }nt        › d|dz   › d�}t        d	|dz   › d
|› �«       	 t        j                  |d¬«      }d|_	        |j                  dk7  r"t        d|dz   › d|j                  › d�«        �n	 t        |j                  |«      }|st        d|dz   › d�«        nØt        d	|dz   › dt        |«      › d�«       |D ]£  \  }	}
}|
t        k  rt        d|
› d|	d d › �«       |dz  }d}Œ,|| v r|dz  }Œ6t        |«      \  }}}|xs |	}|xs |
}|st        d|d d › �«       d}t        ||||«      }|dkD  r|dz  }| j!                  |«       t#        j$                  d«       Œ¥ |s�Œt        d«        n t        d«       t        d |› �«       t        d!|› �«       ||t&        d"œ}t        d#t)        j*                  |d¬$«      › �«       y # t        $ r}t        d|dz   › d|› �«       Y d }~ Œxd }~ww xY w)%Nu=   [INFO] æ¹›æ±Ÿå¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€ â€” è¡Œæ”¿å…¬ç¤º çˆ¬è™«å�¯åŠ¨u   [INFO] æ—¶é—´é˜ˆå€¼: u   [INFO] å·²æœ‰URLæ•°: r   FÚindex_é   z.htmlu
   [PAGE] ç¬¬u   é¡µ: rH   rI   rK   rL   u
   [INFO] ç¬¬u
   é¡µè¿”å›ž u   , å�œæ­¢u   [ERROR] ç¬¬u   é¡µè¯·æ±‚å¤±è´¥: u   é¡µæ— æ•°æ�®, å�œæ­¢u
   é¡µèŽ·å�– u    æ�¡u   [SKIP] æ—¥æœŸè¶…é™� r   é   Tu   [WARN] æ­£æ–‡ä¸ºç©º: r0   gš™™™™™É?u(   [INFO] é�‡åˆ°è¶…é™�æ—¥æœŸï¼Œå�œæ­¢ç¿»é¡µu   
[SUMMARY] å®Œæˆ�!u   [SUMMARY] æ–°å¢ž: u   [SUMMARY] è·³è¿‡: )ÚnewÚskippedÚ	site_namez	
[RESULT])Úensure_ascii)r   Ú	THRESHOLDr   ÚlenÚrangeÚ	MAX_PAGESr9   rU   r6   rV   rW   r   rE   rX   re   r'   Úaddr,   Úsleepr   ÚjsonÚdumps)Úexisting_urlsÚ	new_countÚ
skip_countÚ
stop_crawlr>   r%   r^   r   r@   r"   r#   Ú
detail_urlÚdt_titleÚdt_dater$   Úfinal_titleÚ
final_dater&   Úresults                      r   Úcrawlr€      s¶  € Ü	ÐIÔKÜ	Ð!¤) Ð
-Ô.ä%Ó'€MÜ	Ð!¤# mÓ"4Ð!5Ð
6Ô7à€IØ€JØ€Jäœ)Ó$ó ;ˆÙÚà�qŠ=Ü‰Hä"˜ 6¨(°Q©,¨°uÐ=ˆHä�
˜8 A™:˜, e¨H¨:Ð6Ô7ð	Ü—;‘;˜x°�;Ó4ˆDØ#ˆDŒMØ×Ñ 3Ò&Ü˜
 8¨A¡: ,¨j¸×9IÑ9IÐ8JÈ(ÐSÔTÚð 'ô   §	¡	¨8Ó4ˆÙÜ�J˜x¨™z˜lÐ*>Ð?Ô@Ùä�
˜8 A™:˜, j´°U³°¸DÐAÔBà+0ò 	Ñ'ˆE�8˜Zàœ)Ò#ÜÐ,¨X¨J°b¸¸sÀ¸¸ÐEÔFØ˜a‘�
Ø!�
Øð ˜]Ñ*Ø˜a‘�
Øô *6°jÓ)AÑ&ˆH�g˜wØ"Ò+ eˆKØ Ò, HˆJáÜÐ-¨k¸#¸2Ð.>Ð-?Ð@ÔAØ�ä! +¨z¸7ÀJÓOˆHØ˜!Š|Ø˜Q‘�	Ø×!Ñ! *Ô-ä�J‰J�s�Oð7	ó: ÜÐ<Ô>Ùðw;ôz 
ÐÔ!Ü	Ð˜y˜kÐ
*Ô+Ü	Ð˜z˜lÐ
+Ô,à¨:ÄIÑN€FÜ	ˆJ”t—z‘z &°uÔ=Ð>Ð
?Õ@øôc ò 	Ü�K ¨¡
˜|Ð+<¸Q¸CÐ@ÔAÝûð	ús   ÂAH6È6	IÈ?IÉIÚ__main__)Ú__doc__ÚosÚsysrY   rt   r,   ÚrequestsÚbs4r   r   r   Úgetenvr   r9   r   ÚnowÚstrftimern   rq   ÚHEADERSÚSessionrU   ÚheadersÚupdater   r   r'   rE   re   r€   Ú__name__© rF   r   ú<module>r�      sÊ   ðñ÷ × Ó Û Ý ß (à
ˆ"�)‰)�KÐ!2Ó
3€ØE€Ø3€	ØˆX�\‰\‹^™i¨UÔ3Ñ3×=Ñ=¸jÓI€	Ø€	ð DØ.ñ€ð
 ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ ã ò
òò"ò4+ òZMAð^ ˆzÒÙ	…Gð rF   