Ë
    ¸¬ujr  ã                   ó    — d Z ddlZddlZddlZddlZddlmZ dZdZdZ	ddiZ
d	Zd
Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uÏ   
åž¦åˆ©çŸ³åŒ–é›†å›¢ - é€šçŸ¥å…¬å‘Šçˆ¬è™«
https://www.klsh.com/news/notice/
CMS: Discuz! X3.5 Portal
åˆ—è¡¨: ul.newlist > li (span a + p date)
åˆ†é¡µ: index.php?page=N (18é¡µ)
è¯¦æƒ…: div.new5 > div.c æ­£æ–‡
é    N)ÚBeautifulSoupzhttps://www.klsh.comz!https://www.klsh.com/news/notice/u   åž¦åˆ©çŸ³åŒ–-é€šçŸ¥å…¬å‘Šz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z/root/search.dbé   c                  óN   — t        j                  t        «      } t        | _        | S )N)Úsqlite3ÚconnectÚDB_PATHÚstrÚtext_factory)Úconns    ú&/root/gov_crawler/crawl_klsh_notice.pyÚget_connr      s   € Ü�?‰?œ7Ó#€DÜ€DÔØ€Kó    c                 óL   — | j                  d|f«      }|j                  «       d uS )Nz(SELECT 1 FROM gov_raw WHERE page_url = ?)ÚexecuteÚfetchone)r   ÚurlÚcurs      r   Ú
url_existsr   "   s&   € Ø
�,‰,ÐAÀCÀ6Ó
J€CØ�<‰<‹> Ð%Ð%r   c           
      óX   — | j                  d|d   |d   |d   |d   |d   |d   f«       y )NzŠINSERT OR IGNORE INTO gov_raw
           (title, page_url, summary, content, site_name, publish_date)
           VALUES (?, ?, ?, ?, ?, ?)ÚtitleÚpage_urlÚsummaryÚcontentÚ	site_nameÚpublish_date)r   )r   Úrecords     r   Úinsert_recordr   '   sF   € Ø‡L�Lð	(ð 
�‰˜& Ñ,¨f°YÑ.?Ø	�	Ñ	˜F ;Ñ/Ø	�Ñ	ð	!õ	r   c           	      ó
  — | syt        j                  d| j                  «       «      }|rK|j                  d«      › dt	        |j                  d«      «      d›dt	        |j                  d«      «      d›�S | j                  «       S )u&   æ ‡å‡†åŒ–æ—¥æœŸ YYYY-M-D -> YYYY-MM-DDÚ z(\d{4})-(\d{1,2})-(\d{1,2})é   ú-é   Ú02dé   )ÚreÚmatchÚstripÚgroupÚint)Údate_strÚms     r   Únormalize_dater,   2   sm   € áØÜ
�‰Ð/°·±Ó1AÓB€AÙØ—'‘'˜!“*�˜Qœs 1§7¡7¨1£:›¨sÐ3°1´S¸¿¹À»³_ÀSÐ4IÐJÐJØ�>‰>ÓÐr   c                 ó¼   — t        j                  dd| t         j                  ¬«      }t        j                  dd|«      }t        |d«      }|j	                  dd¬	«      S )
u0   æ��å�–æ ¼å¼�è‰¯å¥½çš„æ­£æ–‡ï¼Œä¿�ç•™æ®µè�½ç»“æž„z(</?(b|span|font|strong|u|i|em|o:p)[^>]*>r   )Úflagsz	<br\s*/?>ú
úhtml.parserz

T)Ú	separatorr'   )r%   ÚsubÚ
IGNORECASEr   Úget_text)ÚhtmlÚtextÚsoups      r   Úextract_clean_textr8   <   sN   € ô �6‰6Ð=¸rÀ4ÌrÏ}É}Ô]€Dä�6‰6�,  dÓ+€DÜ˜˜}Ó-€DØ�=‰= 6°ˆ=Ó6Ð6r   c                 óþ   — | dk(  rt         }nt         › d| › �}	 t        j                  |t        d¬«      }d|_        |j
                  dk(  r|j                  S y# t        $ r}t        d|› d	|› �«       Y d}~yd}~ww xY w)
u   èŽ·å�–åˆ—è¡¨é¡µHTMLr    zindex.php?page=é   ©ÚheadersÚtimeoutúutf-8éÈ   Nu     [ERROR] åˆ—è¡¨é¡µ õ    è¯·æ±‚å¤±è´¥: )	ÚLIST_URLÚrequestsÚgetÚHEADERSÚencodingÚstatus_coder6   Ú	ExceptionÚprint)Úpager   ÚrespÚes       r   Ú
fetch_listrL   F   s€   € àˆq‚yÜ‰ä�
˜/¨$¨Ð0ˆðÜ�|‰|˜C¬¸"Ô=ˆØˆŒØ×Ñ˜sÒ"Ø—9‘9ÐØøÜò ÜÐ$ S E¨¸¸Ð<Ô=Üûðús   ™=A Á	A<Á!A7Á7A<c                 ó~  — t        | d«      }|j                  dd¬«      }|sg S g }|j                  d«      D �]  }|j                  d«      }|j                  d«      }|sŒ)|j                  dd	«      j	                  «       }|j                  d
¬«      j                  d«      j                  d«      }|r|j                  d
¬«      nd	}	|r|sŒ”|j                  d«      r
t        |z   }
n |j                  d«      r|}
nt        dz   |z   }
t        |	r|	j                  «       d   nd	«      }|j                  ||
|f«       �Œ |S )u2   è§£æž�åˆ—è¡¨é¡µï¼Œè¿”å›ž (title, url, date) åˆ—è¡¨r0   ÚulÚnewlist©Úclass_ÚliÚaÚpÚhrefr   T©r'   z ...z...ú/Úhttpr   )r   ÚfindÚfind_allrC   r'   r4   ÚrstripÚ
startswithÚBASE_URLr,   ÚsplitÚappend)r5   r7   rN   ÚitemsrR   Úa_tagÚp_tagrU   r   r*   Úfull_urlÚpub_dates               r   Ú
parse_listre   X   s,  € ä˜˜}Ó-€DØ	�‰�4 	ˆÓ	*€BÙØˆ	à€EØ�k‰k˜$Óó 2ˆØ—‘˜“ˆØ—‘˜“ˆÙØà�y‰y˜ Ó$×*Ñ*Ó,ˆØ—‘ T�Ó*×1Ñ1°&Ó9×@Ñ@ÀÓGˆÙ16�5—>‘>¨�>Ô-¸Bˆá™5Øð �?‰?˜3ÔÜ $‘‰HØ�_‰_˜VÔ$Ø‰Hä #‘~¨Ñ,ˆHô "¹ (§.¡.Ó"2°1Ò"5ÀrÓJˆà�‰�e˜X xÐ0Ö1ð12ð4 €Lr   c                 óê  — 	 t        j                  | t        d¬«      }d|_        |j                  dk7  rdg fS t        |j                  d«      }|j                  dd¬	«      }|r?|j                  dd
¬	«      }|rt        t        |«      «      }nCt        t        |«      «      }n.|j                  dd
¬	«      }|rt        t        |«      «      }ndg fS g }dt        «       v r|n|}|râ|j                  d«      D ]Î  }|j                  dd«      j                  «       }	|j                  d¬«      }
|	r#|	j                  d«      sd|	j                  «       v rŒ[|	j                  d«      r
t         |	z   }n |	j                  d«      st         dz   |	z   }n|	}t#        j$                  d|	j                  «       «      sŒ»|j'                  |
|dœ«       ŒÐ ||fS # t(        $ r}t+        d| › d|› �«       dg fcY d}~S d}~ww xY w)u   èŽ·å�–è¯¦æƒ…é¡µæ­£æ–‡r:   r;   r>   r?   Nr0   ÚdivÚnew5rP   ÚcÚc_divrS   rU   r   TrV   ú#Ú
javascriptrW   rX   z"\.(pdf|doc|docx|xls|xlsx|zip|rar)$)r6   r   u     [ERROR] è¯¦æƒ…é¡µ r@   )rB   rC   rD   rE   rF   r   r6   rY   r8   r	   ÚdirrZ   r'   r4   r\   Úlowerr]   r%   Úsearchr_   rG   rH   )r   rJ   r7   Úcontent_divrj   Úcontent_textÚattachmentsÚ
parent_divrS   rU   r6   ÚahrefrK   s                r   Úfetch_detailru   }   sÖ  € ð0Ü�|‰|˜C¬¸"Ô=ˆØˆŒØ×Ñ˜sÒ"Ø˜�8ˆOä˜TŸY™Y¨Ó6ˆð —i‘i ¨f�iÓ5ˆÙØ×$Ñ$ U°3Ð$Ó7ˆEÙÜ1´#°e³*Ó=‘ä1´#°kÓ2BÓC‘ð —I‘I˜e¨C�IÓ0ˆEÙÜ1´#°e³*Ó=‘à˜R�x�ð ˆØ%¬«Ñ.‘U°Kˆ
áØ ×)Ñ)¨#Ó.ò E�Ø—u‘u˜V RÓ(×.Ñ.Ó0�Ø—z‘z¨�zÓ-�Ù˜tŸ™¨sÔ3°|ÀtÇzÁzÃ|Ñ7SØØ—?‘? 3Ô'Ü$ t™O‘EØŸ™¨Ô0Ü$ s™N¨TÑ1‘Eà �Eä—9‘9ÐBÀDÇJÁJÃLÕQØ×&Ñ&°¸UÑ'CÕDðEð ˜[Ð(Ð(øäò ÜÐ$ S E¨¸¸Ð<Ô=Ø�Rˆx�ûðús0   ‚5G
 ¸BG
 ÃCG
 Æ0G
 Ç
	G2ÇG-Ç'G2Ç-G2c            	      óÔ  — t        dt        › dt        › �«       t        «       } d}d}d}t	        dt        dz   «      D �]`  }t        d|› d�«       t        |«      }|st        d|› d�«        �n2t        |«      }|st        d|› d	�«        �nt        d
t        |«      › d�«       |D ]Þ  \  }}}	|dz  }t        | |«      r|dz  }Œt        |«      \  }
}|
rt        |
«      dk  r|d d }t        d|› d�«       |dz  }ŒVt        |
«      dkD  r|
d d n|
}||||
t        |	dœ}t        | |«       | j                  «        |dz  }|d d }t        d|› d|	› d�«       |rt        dt        |«      › d�«       t        j                  d«       Œà t        j                  d«       �Œc | j                  «        t        d«       t        d|› d�«       t        d|› d�«       t        d|› d�«       y )Nu0   === åž¦åˆ©çŸ³åŒ–-é€šçŸ¥å…¬å‘Šçˆ¬è™« ===
ç›®æ ‡: u   
æ€»é¡µæ•°: r   r    u   
--- ç¬¬u   é¡µ ---u     [INFO] ç¬¬u   é¡µæ— å†…å®¹ï¼Œç»“æ�Ÿu   é¡µæ— åˆ—è¡¨é¡¹ï¼Œç»“æ�Ÿu	     æœ¬é¡µ u    æ�¡é2   z  [!] u   ... å†…å®¹è¿‡çŸ­r?   )r   r   r   r   r   r   z  [+] z... (ú)u        é™„ä»¶: u   ä¸ªg      à?u   
=== å®Œæˆ� ===u   æ€»æ‰«æ��: u   æ–°å¢žå…¥åº“: u   å·²å­˜åœ¨è·³è¿‡: )rH   rA   Ú	MAX_PAGESr   ÚrangerL   re   Úlenr   ru   Ú	SITE_NAMEr   ÚcommitÚtimeÚsleepÚclose)r   Útotal_foundÚtotal_insertedÚtotal_skippedrI   r5   r`   r   r   rd   r   rr   Úshort_titler   r   s                  r   Úmainr…   ²   s%  € Ü	Ð=¼h¸ZÀ}ÔU^ÐT_Ð
`Ôaä‹:€Dà€KØ€NØ€Mä�aœ Q™Ó'ó 2ˆÜ�	˜$˜˜wÐ'Ô(Ü˜$ÓˆÙÜ�L  Ð&;Ð<Ô=Úä˜4Ó ˆÙÜ�L  Ð&>Ð?Ô@Úä�	œ#˜e›*˜ TÐ*Ô+à$)ò "	Ñ ˆE�3˜Ø˜1ÑˆKä˜$ Ô$Ø Ñ"�Øä#/°Ó#4Ñ ˆG�[Ùœc '›l¨RÒ/Ø# C R˜j�Ü˜˜{˜mÐ+;Ð<Ô=Ø Ñ"�Øä'*¨7£|°cÒ'9�g˜d˜s‘m¸wˆGð ØØ"Ø"Ü&Ø (ñˆFô ˜$ Ô'Ø�K‰KŒMØ˜aÑˆNà  ˜*ˆKÜ�F˜;˜- u¨X¨J°aÐ8Ô9ÙÜ˜¤c¨+Ó&6Ð%7°sÐ;Ô<ä�J‰J�s�OðE"	ôH 	�
‰
�1Žðe2ðh 	‡J�J„Lä	ÐÔÜ	ˆK˜�} DÐ
)Ô*Ü	ˆN˜>Ð*¨$Ð
/Ô0Ü	Ð˜m˜_¨DÐ
1Õ2r   Ú__main__)Ú__doc__rB   r%   r   r~   Úbs4r   r]   rA   r|   rD   r   ry   r   r   r   r,   r8   rL   re   ru   r…   Ú__name__© r   r   ú<module>r‹      sˆ   ðñó Û 	Û Û Ý Ø!€Ø.€Ø'€	àÐPð€ð €Ø€	òò&ò
òò7òò$"òJ2òjB3ðJ ˆzÒÙ…Fð r   