Ë
    ñµ£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 ddlm	Z	 dZ
dZddd	d
œZ ej                  «       Zej                  j!                  e«       dZddlZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u§   
çˆ¬å�– è¥¿è—�è‡ªæ²»åŒºäººæ°‘æ”¿åºœé©»æ ¼å°”æœ¨åŠžäº‹å¤„ - å›­åŒºåŠ¨æ€�
https://gem.xizang.gov.cn/xwzx/yqdt/
TRSç³»ç»Ÿï¼Œindex.htmlåˆ†é¡µ + è¯¦æƒ…é¡µTRS_UEDITORæ­£æ–‡
é    N)ÚBeautifulSoup)Úurljoinz$https://gem.xizang.gov.cn/xwzx/yqdt/u=   è¥¿è—�è‡ªæ²»åŒºäººæ°‘æ”¿åºœé©»æ ¼å°”æœ¨åŠžäº‹å¤„-å›­åŒºåŠ¨æ€�zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languagez/root/search.dbc                 ó|   — | j                  dt        f«       | j                  «       D �ch c]  }|d   ’Œ	 c}S c c}w )Nz0SELECT page_url FROM gov_raw WHERE site_name = ?r   )ÚexecuteÚ	SITE_NAMEÚfetchall)ÚcursorÚrows     úcrawl_gemxizang.pyÚget_existing_urlsr   !   s2   € Ø
‡N�NÐEÌ	À|ÔTØ$Ÿo™oÓ/Ö0�sˆC�‹FÒ0Ð0ùÒ0s   ª9c           	      óf   — |rt        |«      dkD  r|d d }| j                  dt        ||||df«       y )Ni ¡ zˆINSERT OR IGNORE INTO gov_raw (site_name, page_url, title, publish_date, content, date_rank, status) VALUES (?, ?, ?, ?, ?, ?, 'normal')r   )Úlenr   r   )r
   ÚtitleÚpublish_dateÚpage_urlÚcontents        r   Úinsert_articler   %   s=   € á”3�w“< &Ò(Ø˜'˜6Ð"ˆØ
‡N�Nð	.ä	�H˜e \°7¸AÐ>õó    c                 ó°  — t        | d«      }d}|j                  d«      }|r|j                  d¬«      }|s;|j                  dddi¬	«      }|r$|j                  d
«      r|d
   j	                  «       }|sN|j                  d«      }|r;|j                  d¬«      }d|v r#|j                  d«      d   j	                  «       }n|}d}|j                  dd¬«      }	|	rU|	j                  d«      }
|
rB|
j                  d¬«      j                  dd«      j                  dd«      j                  dd«      }d}|	r4|	j                  d«      }t        |«      dk\  r|d   j                  d¬«      }|j                  dt        j                  d«      ¬«      }|s|j                  dd¬«      }|s&|j                  dt        j                  d«      ¬«      }d}g }|rî|j                  d«      D ]8  }|j                  dd«      }|sŒ|j                  d«      rŒ*t        ||«      |d<   Œ: |j                  d«      D ]ƒ  }|j                  d d«      }|sŒ|j                  d«      rŒ*|j                  d!«      rŒ<t        ||«      }||d <   t        j                  d"|t        j                  «      rŒs|j                  |«       Œ… t!        |«      }|rd#j#                  |«      nd}|||||fS )$u   ä»Žè¯¦æƒ…é¡µæ��å�–æ­£æ–‡HTMLúhtml.parserÚ Úh3T©ÚstripÚmetaÚnameÚArticleTitle)Úattrsr   r   Ú_r   Úpzatl-sub©Úclass_Úspanu   å¹´ú-u   æœˆu   æ—¥é   é   Údivz"TRS_UEDITOR|trs_paper_default|viewzxl-atl-plistszxl-atl-plists|TRS_EditorÚimgÚsrcÚhttpÚaÚhrefÚ
javascriptz\.(jpg|jpeg|png|gif|webp|bmp)$ú,)r   ÚfindÚget_textÚgetr   ÚsplitÚreplaceÚfind_allr   ÚreÚcompileÚ
startswithr   ÚsearchÚIÚappendÚstrÚjoin)Ú	html_textÚbaseÚsoupr   r   ÚmtÚ	title_tagÚtÚdate_strÚp_subr$   ÚsourceÚspansÚcontent_divÚcontent_htmlÚattachments_listr)   r*   r,   r-   Úabs_urlÚattachmentss                         r   Úextract_contentrM   /   s²  € ä˜ MÓ2€Dð €EØ	�‰�4‹€BÙ	Ø—‘ $�Ó'ˆÙØ�Y‰Y�v f¨nÐ%=ˆYÓ>ˆÙ�"—&‘&˜Ô#Ø�y‘M×'Ñ'Ó)ˆEÙØ—I‘I˜gÓ&ˆ	ÙØ×"Ñ"¨Ð"Ó.ˆAØ�a‰xØŸ™ › Q™×-Ñ-Ó/‘à�ð €HØ�I‰I�c )ˆIÓ,€EÙØ�z‰z˜&Ó!ˆÙØ—}‘}¨4�}Ó0×8Ñ8¸ÀÓD×LÑLÈUÐTWÓX×`Ñ`ÐafÐhjÓkˆHð €FÙØ—‘˜vÓ&ˆÜˆu‹:˜Š?Ø˜1‘X×&Ñ&¨TÐ&Ó2ˆFð —)‘)˜E¬"¯*©*Ð5ZÓ*[�)Ó\€KÙØ—i‘i ¨o�iÓ>ˆÙØ—i‘i ¬b¯j©jÐ9TÓ.U�iÓVˆà€LØÐáà×'Ñ'¨Ó.ò 	0ˆCØ—'‘'˜% Ó$ˆCÚ˜3Ÿ>™>¨&Õ1Ü$ T¨3Ó/��E’
ð	0ð ×%Ñ% cÓ*ò 	5ˆAØ—5‘5˜ Ó$ˆDÚ˜DŸO™O¨FÕ3¸D¿O¹OÈLÕ<YÜ! $¨Ó-�Ø#��&‘	Ü—y‘yÐ!BÀDÌ"Ï$É$ÕOØ$×+Ñ+¨GÕ4ð	5ô ˜;Ó'ˆá0@�#—(‘(Ð+Ô,Àb€Kà�(˜F L°+Ð=Ð=r   c                 ó`  — | dk(  rt        t        d«      }nt        t        d| › d�«      }t        j                  |dd¬«      }d|_        t        |j                  d	«      }g }|j                  d
d¬«      D ]¶  }|j                  dd¬«      D ]ž  }|j                  d«      }|j                  d«      }|sŒ(|j                  d«      sŒ:|d   j                  «       }	t        |j                  |	«      }
|j                  d¬«      }|r|j                  d¬«      nd}|j                  |||
f«       Œ  Œ¸ |S )u   çˆ¬å�–æŒ‡å®šé¡µç �çš„åˆ—è¡¨é¡µr   z
index.htmlÚindex_z.htmlé<   F©ÚtimeoutÚverifyúutf-8r   Úulzgl-cons-rgsr"   ÚliÚclearfixr,   r$   r-   Tr   r   )r   ÚBASE_URLÚsessionr2   Úencodingr   Útextr5   r0   r   Úurlr1   r;   )Úpage_numr\   Úrespr@   ÚitemsrU   rV   Úa_tagÚspan_tagr-   Ú
detail_urlr   rD   s                r   Ú
crawl_pagerc   u   s  € à�1‚}Ü”h Ó-‰ä”h &¨¨
°%Ð 8Ó9ˆä�;‰;�s B¨uˆ;Ó5€DØ€D„MÜ˜Ÿ™ MÓ2€Dà€EØ�m‰m˜D¨ˆmÓ7ò 	<ˆØ—+‘+˜d¨:�+Ó6ò 	<ˆBØ—G‘G˜C“LˆEØ—w‘w˜v“ˆHÚ˜Ÿ™ 6Õ*Ø˜V‘}×*Ñ*Ó,�Ü$ T§X¡X¨tÓ4�
ØŸ™¨T˜Ó2�Ù<D˜8×,Ñ,°4Ð,Ô8È"�Ø—‘˜e X¨zÐ:Õ;ñ	<ð	<ð €Lr   c                 óÖ   — 	 t         j                  | dd¬«      }d|_        t        |j                  | «      \  }}}}}|||||fS # t
        $ r}t        d| › d|› �«       Y d}~yd}~ww xY w)	u   çˆ¬å�–è¯¦æƒ…é¡µrP   FrQ   rT   u     [ERROR] è¯¦æƒ…é¡µå¼‚å¸¸ z: N)r   r   r   r   r   )rY   r2   rZ   rM   r[   Ú	ExceptionÚprint)rb   r^   r   rD   rF   rI   rL   Úes           r   Úcrawl_detailrh   �   sx   € ð"Ü�{‰{˜:¨r¸%ˆ{Ó@ˆØˆŒÜ=LÈTÏYÉYÐXbÓ=cÑ:ˆˆx˜ ¨{Ø�h ¨°kÐAÐAøÜò "ÜÐ*¨:¨,°b¸¸Ð<Ô=Ü!ûð"ús   ‚AA Á	A(ÁA#Á#A(c                  óD  — d} d}t         j                  dd  D ]&  }|dk(  rd} Œ|j                  «       sŒt        |«      }Œ( t	        j
                  t        «      }|j                  «       }|j                  d«       |j                  «        t        |«      }t        dt        |«      › d�«       d	}| rBd
dlm}m} |j                  «        ||¬«      z
  }	|	j!                  d«      }t        d|› d�«       d}
g }t#        |
«      D ]a  }t        d|dz   › d|
› d�«       	 t%        |«      }|j'                  |«       t        dt        |«      › d�«       t+        j,                  d«       Œc t        dt        |«      › d�«       d
}d
}d
}t/        |d«      D ]ÿ  \  }\  }}}| r,|r*|r(||k  r#|dz  }|dk(  rt        d|› d|d d › d|› d�«       Œ8||v r|dz  }ŒBt        d|› dt        |«      › d|d d › d �«       t1        |«      \  }}}}}|r|n|}|r|n|}|rt        |j3                  «       «      d!k  rt        d"«       |dz  }Œ¯t5        |||||«       |dz  }|d#z  d
k(  r|j                  «        t        d$|› d�«       t+        j,                  d%«       �Œ |j                  «        t        d&«       |j7                  «        t        d'«       t        d(|› d�«       t        d)|› d�«       t        d*|› d�«       y # t(        $ r}t        d|dz   › d|› �«       Y d }~�ŒÊd }~ww xY w)+NFé   r'   z--incrementalTa/  
        CREATE TABLE IF NOT EXISTS gov_raw (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            title TEXT,
            date_str TEXT,
            page_url TEXT UNIQUE,
            content TEXT,
            source TEXT,
            site_name TEXT,
            attachments TEXT
        )
    u   å·²æœ‰ u
    æ�¡è®°å½•r   r   )ÚdatetimeÚ	timedelta)Údaysz%Y-%m-%du   å¢žé‡�æ¨¡å¼�ï¼šä»…çˆ¬å�– u    ä¹‹å�Žçš„æ–‡ç« é   u
   èŽ·å�–ç¬¬ ú/u    é¡µ...u	     æœ¬é¡µ u    æ�¡u     [ERROR] ç¬¬ u    é¡µå¼‚å¸¸: g      à?u   
åˆ—è¡¨å…± u     è·³è¿‡æ—§æ•°æ�®ï¼ˆæ—©äºŽ u   ï¼‰ï¼Œé¦–ä¸ª: z (ú)z  [z] z...é2   u&       âš  æ­£æ–‡è¿‡çŸ­æˆ–ä¸ºç©ºï¼Œè·³è¿‡é
   u       âœ“ å·²æ��äº¤ g333333Ó?u+   
FTS ç”±è§¦å�‘å™¨ç»´æŠ¤, è·³è¿‡æœ¬åœ°é‡�å»ºu   
=== å®Œæˆ� ===u   æ–°å¢ž: u   è·³è¿‡: u   é”™è¯¯: )ÚsysÚargvÚisdigitÚintÚsqlite3ÚconnectÚDB_PATHr
   r   Úcommitr   rf   r   rk   rl   ÚnowÚstrftimeÚrangerc   Úextendre   ÚtimeÚsleepÚ	enumeraterh   r   r   Úclose)ÚincrementalÚincremental_daysÚargÚconnr
   Úexisting_urlsÚcutoff_daterk   rl   ÚcutoffÚ
page_countÚ	all_itemsr!   r_   rg   Ú	new_countÚ
skip_countÚerror_countÚir   rD   rb   Údt_titleÚdt_daterF   rI   rL   Úfinal_titleÚ
final_dates                                r   Úmainr”   ›   sQ  € Ø€KØÐÜ�x‰x˜˜ˆ|ò (ˆØ�/Ò!Ø‰KØ�[‰[�]Ü" 3›xÑð	(ô �?‰?œ7Ó#€DØ�[‰[‹]€Fà
‡N�Nð ô 	ð 	‡K�K„Mä% fÓ-€MÜ	ˆG”C˜Ó&Ð' zÐ
2Ô3à€KÙß0Ø—‘“¡)Ð1AÔ"BÑBˆØ—o‘o jÓ1ˆÜÐ)¨+¨Ð6FÐGÔHà€JØ€IÜ�:Óò ˆÜ�
˜1˜Q™3˜%˜q  ¨GÐ4Ô5ð	9Ü˜q“MˆEØ×Ñ˜UÔ#Ü�Iœc %›j˜\¨Ð.Ô/ô 	�
‰
�3�ðô 
ˆLœ˜Y›Ð(¨Ð
-Ô.à€IØ€JØ€Kä,5°iÀÓ,Cò Ñ(ˆÑ(ˆE�8˜ZÙ™;©8¸À;Ò8NØ˜!‰OˆJØ˜QŠÜÐ3°K°=ÀÈuÐUXÐVXÈzÈlÐZ\Ð]eÐ\fÐfgÐhÔiØà˜Ñ&Ø˜!‰OˆJØä��A�3�aœ˜I›Ð' r¨%°°¨*¨°SÐ9Ô:Ü?KÈJÓ?WÑ<ˆ�'˜6 <°á"*‘h°ˆÙ '‘W¨Xˆ
áœs <×#5Ñ#5Ó#7Ó8¸2Ò=ÜÐ:Ô<Ø˜1ÑˆKØÜ�v˜{¨J¸
ÀLÔQØ�Q‰ˆ	à�r‰>˜QÒØ�K‰KŒMÜÐ& y k°Ð6Ô7ä�
‰
�3Žð9ð< 	‡K�K„Mô 
Ð
8Ô9à‡J�J„Lä	ÐÔÜ	ˆH�Y�K˜tÐ
$Ô%Ü	ˆH�Z�L Ð
%Ô&Ü	ˆH�[�M Ð
&Õ'øôe ò 	9Ü�N 1 Q¡3 % |°A°3Ð7×8Ò8ûð	9ús   Ä4K7Ë7	LÌ LÌLÚ__main__)Ú__doc__Úrequestsr6   rs   Úosr   Úbs4r   Úurllib.parser   rX   r   ÚHEADERSÚSessionrY   ÚheadersÚupdatery   rw   r   r   rM   rc   rh   r”   Ú__name__© r   r   ú<module>r¡      s    ðñó Û 	Û 
Û 	Û Ý Ý  à1€ØK€	ðGàOØ0ñ	€ð ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ à
€Û ò1òòC>òLò4	"ò^(ðB ˆzÒÙ…Fð r   