Ë
    †É…jm  ã                   ó<  — 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 eej                  «      dkD  r2ej                  d   j                  «       r e
ej                  d   «      ndZe� ed ee«      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
  j1                  d«      ZdZdddœZ ej8                  «       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.scanju.gov.cn/gongkai/jichu/40016.html
Custom CMS, ?page=Nåˆ†é¡µ
é    Né   z[AutoPg] max_pages=)ÚBeautifulSoup)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/root/search.dbz2https://www.scanju.gov.cn/gongkai/jichu/40016.htmlu+   é�‚å®�å¸‚å®‰å±…åŒºäººæ°‘æ”¿åºœ-é€šçŸ¥å…¬å‘ŠiG  )Údaysz%Y-%m-%dén   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.scanju.gov.cn/)z
User-AgentÚRefererc                  óR  — 	 t        j                  t        d¬«      } | 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)Né<   ©Útimeoutz.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_scanju.pyÚget_existing_urlsr    !   sŒ   € ð	Ü�‰œw°Ô3ˆØ�K‰K‹MˆØ	�	‰	ÐBÄYÀLÔQØ&'§j¡j£lÖ3˜s�C˜“FÐ3ˆÐ3Ø�
‰
ŒØˆùò 4øô ò ÜÐ.¨q¨cÐ2Ô3Ü‹u�ûðús0   ‚AA; ÁA6Á"A; Á6A; Á;	B&ÂB!ÂB&Â!B&c                 óŽ  — 	 t        j                  t        d¬«      }|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)Nr   r   z—
            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°Ô3ˆØ�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«      }|s|j                  d«      }|D ]“  }|j                  d«      }|sŒ|j	                  dd«      }d|vrŒ.|j                  d¬	«      }|j                  d
«      }	|	r|	j                  d¬	«      nd}
|j                  d«      r|}nd|› �}|j                  ||
|f«       Œ• |S )u   è§£æž�åˆ—è¡¨é¡µúhtml.parserzul.content-list liÚliÚaÚhrefÚ z/gongkai/show/T©r#   ÚspanÚhttpzhttps://www.scanju.gov.cn)r   ÚselectÚfind_allÚfindÚgetÚget_textÚ
startswithÚappend)ÚhtmlÚpage_numÚsoupÚitemsÚli_tagsr.   Úa_tagr0   r&   Ú	date_spanr'   r)   s               r   Úparse_list_pagerC   >   sß   € ä˜˜}Ó-€DØ€EØ�k‰kÐ.Ó/€GÙà—-‘- Ó%ˆØò 2ˆØ—‘˜“ˆÙØØ�y‰y˜ Ó$ˆØ 4Ñ'ØØ—‘ T�Ó*ˆð —G‘G˜F“Oˆ	Ù5>�9×%Ñ%¨DÐ%Ô1ÀBˆð �?‰?˜6Ô"Ø‰Hà2°4°&Ð9ˆ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	di¬«      }	|	r|	j                  dd«      }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   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹é   r   úutf-8éÈ   )NNNr-   r1   ÚmetaÚnameÚArticleTitle)Úattrsr(   Úh1Tr2   ÚPubDateNé
   ÚContentSourcezdiv.xqing-web-boxu   [ERROR] èŽ·å�–è¯¦æƒ…å¤±è´¥ r"   )Úsessionr8   ÚencodingÚstatus_coder   Útextr7   r9   r#   Ú
select_oneÚstrr   r   )ÚurlÚrespr>   r&   Ú
meta_titlerM   r'   Ú	meta_dateÚsourceÚmeta_srcr(   Úcontent_divr   s                r   Úfetch_detailr^   ]   sd  € ð' Ü�{‰{˜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ð ˆØ—9‘9˜V¨F°OÐ+D�9ÓEˆÙØ—\‘\ )¨RÓ0ˆFð ˆØ—o‘oÐ&9Ó:ˆÙÜ˜+Ó&ˆGàŠ{˜˜H gÐ-Ð-øäò  ÜÐ+¨C¨5°°1°#Ð6Ô7Üûð ús   ‚-D( °C7D( Ä(	EÄ1EÅEc            
      ó¨  — t        d«       t        dt        › �«       t        «       } t        dt        | «      › �«       d}d}d}t	        dt
        xs t        «      D �]s  }|r �nn|dk(  rt        }nt        › d|dz   › �}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  sŒz|dz  }| j#                  |«       Œ‘ |s�Œit        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)#Nu7   [INFO] é�‚å®�å¸‚å®‰å±…åŒº â€” é€šçŸ¥å…¬å‘Š çˆ¬è™«å�¯åŠ¨u   [INFO] æ—¶é—´é˜ˆå€¼: u   [INFO] å·²æœ‰URLæ•°: r   Fz?page=r   u
   [PAGE] ç¬¬u   é¡µ: rF   r   rG   rH   u
   [INFO] ç¬¬u
   é¡µè¿”å›ž u   , å�œæ­¢u   [ERROR] ç¬¬u   é¡µè¯·æ±‚å¤±è´¥: u   é¡µæ— æ•°æ�®, å�œæ­¢u
   é¡µèŽ·å�– u    æ�¡u   [SKIP] æ—¥æœŸè¶…é™� r"   é   Tu   [WARN] æ­£æ–‡ä¸ºç©º: r1   u(   [INFO] é�‡åˆ°è¶…é™�æ—¥æœŸï¼Œå�œæ­¢ç¿»é¡µu   
[SUMMARY] å®Œæˆ�!u   [SUMMARY] æ–°å¢ž: u   [SUMMARY] è·³è¿‡: )ÚnewÚskippedÚ	site_namez	
[RESULT])Úensure_ascii)r   Ú	THRESHOLDr    ÚlenÚrangeÚ_MAX_PGÚ	MAX_PAGESÚBASE_URLrQ   r8   rR   rS   r   rC   rT   r^   r+   Úaddr   ÚjsonÚdumps)Úexisting_urlsÚ	new_countÚ
skip_countÚ
stop_crawlr=   r)   rX   r   r?   r&   r'   Ú
detail_urlÚdt_titleÚdt_dater(   Úfinal_titleÚ
final_dater*   Úresults                      r   Úcrawlrx   ˆ   s°  € Ü	ÐCÔEÜ	Ð!¤) Ð
-Ô.ä%Ó'€MÜ	Ð!¤# mÓ"4Ð!5Ð
6Ô7à€IØ€JØ€Jä˜!œWÒ1¬	Ó2ó 9ˆÙÚà�qŠ=Ü‰Hä"˜ 6¨(°Q©,¨Ð8ˆ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‘�	Ø×!Ñ! *Õ-ð3	.ó6 ÜÐ<Ô>Ùðs9ôv 
ÐÔ!Ü	Ð˜y˜kÐ
*Ô+Ü	Ð˜z˜lÐ
+Ô,à¨:ÄIÑN€FÜ	ˆJ”t—z‘z &°uÔ=Ð>Ð
?Õ@øô_ ò 	Ü�K ¨¡
˜|Ð+<¸Q¸CÐ@ÔAÝûð	ús   ÂAH)È)	IÈ2IÉIÚ__main__)'Ú__doc__ÚosÚsysÚrerl   ÚtimeÚ_SYSrf   ÚargvÚisdigitÚintrh   r   rV   ÚrequestsÚbs4r   r   r   Úgetenvr   rj   r   ÚnowÚstrftimere   ri   ÚHEADERSÚSessionrQ   ÚheadersÚupdater   r    r+   rC   r^   rx   Ú__name__© rD   r   ú<module>rŽ      s  ðñ÷ × Ó ã Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/ã Ý ß (à
ˆ"�)‰)�KÐ!2Ó
3€Ø?€Ø9€	ØˆX�\‰\‹^™i¨UÔ3Ñ3×=Ñ=¸jÓI€	Ø€	ð DØ+ñ€ð
 ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ ã ò
òò"ò>) òVKAðZ ˆzÒÙ	…Gð rD   