Ë
    ¸¬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mZm	Z	 ddl
Z
ddlZddlZ ej                  «        dZdZdZ ej                   dd«      Zd	Z ej&                  ej(                  «       e	d
¬«      z
  j+                  d«      ZddiZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r8 ej                  «       Z e«         e d ej                  «       ez
  d›d�«       yy)u„   
å�—ä¸°åŽ¿äººæ°‘æ”¿åºœ - çŽ¯å¢ƒä¿�æŠ¤(col27107)
http://www.jxnf.gov.cn/col/col27107/index.html?number=C60000C60004C60001
Hanweb CMS
é    N)ÚdatetimeÚtimezoneÚ	timedeltau   å�—ä¸°çŽ¯å¢ƒä¿�æŠ¤zhttp://www.jxnf.gov.cnzHhttp://www.jxnf.gov.cn/col/col27107/index.html?number=C60000C60004C60001Ú	SEARCH_DBz/root/search.dbé   iG  )Údaysz%Y-%m-%dz
User-Agentz:Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/125.0.0.0c                 ór   — 	 t        j                  | t        dd¬«      }d|_        |j                  S #  Y y xY w)Né   F)ÚheadersÚtimeoutÚverifyzutf-8)ÚrequestsÚgetÚHEADERSÚencodingÚtext)ÚurlÚrs     ú/root/gov_crawler/crawl_nf.pyÚfetchr      s5   € ðÜ�L‰L˜¤g°rÀ%ÔHˆØˆŒ
Ø�v‰vˆøðÙús   ‚/2 ²6c           
      óÔ  — g }t        j                  d| «      D ]Ì  }t        |j                  d«      z   }|j                  d«      j	                  «       }| t        d| j                  |j                  d«      «      dz
  «      | j                  |j                  d«      «      dz    }t        j                  d|«      }|r|j                  d«      nd}|sŒ¹|j                  |||f«       ŒÎ |S )	NzK<a[^>]*href=\"(/art/\d+/\d+/\d+/art_\d+_\d+\.html)\"[^>]*title=\"([^\"]*)\"é   é   r   i�  éd   z(\d{4}-\d{2}-\d{2})Ú )	ÚreÚfinditerÚBASE_URLÚgroupÚstripÚmaxÚfindÚsearchÚappend)ÚhtmlÚitemsÚmÚhrefÚtitleÚctxÚdmÚpub_dates           r   Ú
parse_listr-      sÉ   € Ø€EÜ�[‰[ÐgÐimÓnò 2ˆÜ˜!Ÿ'™' !›*Ñ$ˆØ—‘˜“
× Ñ Ó"ˆà”3�q˜$Ÿ)™) A§G¡G¨A£JÓ/°Ñ3Ó4°T·Y±Y¸q¿w¹wÀq»zÓ5JÈ3Ñ5NÐOˆÜ�Y‰YÐ-¨sÓ3ˆÙ"$�2—8‘8˜A”;¨"ˆÚØ�L‰L˜%  xÐ0Õ1ð2ð €Ló    c                 óL   — | dkD  rt         j                  dd| › d�«      S t         S )Nr   z
index.htmlÚindex_z.html)ÚLIST_URLÚreplace)Úpages    r   Úget_page_urlr4   *   s*   € ØCGÈ!Â8Œ8×Ñ˜L¨F°4°&¸Ð*>Ó?ÐYÔQYÐYr.   c                 ó¦  — t        | «      }|syd}t        j                  d|«      }|r|j                  d«      }|s[t        j                  d|t        j                  «      }|r4t        j
                  dd|j                  d«      «      j                  «       }d}t        j                  d|«      }|r|j                  d«      }|s)t        j                  d|«      }|r|j                  d«      }d}d	D ]h  }t        j                  ||t        j                  «      }|sŒ+t        |j                  d«      «      d
kD  sŒI|j                  d«      j                  «       } n |rpt        j
                  dd|t        j                  t        j                  z  ¬«      }t        j
                  dd|t        j                  t        j                  z  ¬«      }|||fS )N)r   r   r   r   z4<meta[^>]*name="ArticleTitle"[^>]*content="([^\"]+)"r   z<h1[^>]*>(.*?)</h1>ú<[^>]+>z=<meta[^>]*name="PubDate"[^>]*content="(\d{4}-\d{1,2}-\d{1,2})z!(\d{4}-\d{2}-\d{2})\s*\d{2}:\d{2})zA<!--ZJEG_RSS\.content\.begin-->(.*?)<!--ZJEG_RSS\.content\.end-->z7<meta name="ContentStart">(.*?)<meta name="ContentEnd">z3<div[^>]*class="[^"]*content[^"]*"[^>]*>(.*?)</div>z3<div[^>]*class="[^"]*article[^"]*"[^>]*>(.*?)</div>z-<div[^>]*id="[^"]*zoom[^"]*"[^>]*>(.*?)</div>r   z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>)	r   r   r#   r   ÚSÚsubr    ÚlenÚI)r   r%   r)   r'   r,   ÚcontentÚsels          r   Úfetch_detailr>   -   st  € Ü�‹:€DÙØØ€EÜ
�	‰	ÐIÈ4ÓP€AÙØ—‘˜“
ˆÙÜ�I‰IÐ,¨d´B·D±DÓ9ˆÙÜ—F‘F˜: r¨1¯7©7°1«:Ó6×<Ñ<Ó>ˆEØ€HÜ
�	‰	ÐRÐTXÓY€AÙØ—7‘7˜1“:ˆÙÜ�I‰IÐ:¸DÓAˆÙØ—w‘w˜q“zˆHØ€GðBò ˆô
 �I‰I�c˜4¤§¡Ó&ˆÚ”�Q—W‘W˜Q“Z“ 3Ó&Ø—g‘g˜a“j×&Ñ&Ó(ˆGÙðñ Ü—&‘&Ð5°r¸7Ì"Ï$É$ÌrÏtÉtÉ)ÔTˆÜ—&‘&Ð3°R¸ÌÏÉÌRÏTÉTÉ	ÔRˆØ�(˜GÐ#Ð#r.   c                 ó(  — | sy t        j                  t        «      }|j                  d«       |j                  d«       d\  }}| D ]Ô  }	 |j                  d|j	                  dd«      d d |j	                  dd«      |j	                  dd«      |j	                  d	«      xs dd d
 |j	                  d«      xs dd d |j	                  d«      xs dd d
 |j	                  dd«      dd|j	                  d«      xs dd d f
«       |j
                  dkD  r|dz  }n|dz  }ŒÖ |j                  «        | d   j	                  dd«      }|j                  d|f«       |j                  «        |j                  «        t        d|› d|› �«       y #  |dz  }Y �ŒKxY w)NzPRAGMA journal_mode=WALzPRAGMA synchronous=NORMAL)r   r   z›INSERT OR IGNORE INTO gov_raw (site_name, source_url, page_url, title, publish_date, summary, content, status, category, tags) VALUES (?,?,?,?,?,?,?,?,?,?)Ú	site_namer   éÈ   r   r)   iô  r,   é
   Úsummaryr<   ÚactiveÚtagsr   r   r   z·INSERT INTO gov_search(rowid, title, site_name, summary) SELECT r.id, r.title, r.site_name, r.summary FROM gov_raw r WHERE r.id NOT IN (SELECT rowid FROM gov_search) AND r.site_name=?u     ðŸ’¾ å…¥åº“: æ–°å¢žu   , è·³è¿‡)	Úsqlite3Úconnectr   Úexecuter   Útotal_changesÚcommitÚcloseÚprint)r&   ÚdbÚokÚskipÚitemr@   s         r   Úinsert_to_dbrQ   P   s˜  € ÙØÜ	�‰œÓ	#€BØ‡J�JÐ(Ô)Ø‡J�JÐ*Ô+Ø�H€BˆØò ˆð	Ø�J‰Jð /ð —‘˜ RÓ(¨¨#Ð.°·±¸¸rÓ0BØ—‘˜˜rÓ" T§X¡X¨gÓ%6Ò%<¸"¸d¸sÐ$CØ—‘˜*Ó%Ò+¨¨S¨bÐ1Ø—‘˜)Ó$Ò*¨¨D¨SÐ1Ø—‘˜ 2Ó&¨°"Ø—‘˜&Ó!Ò' R¨¨#Ð.ð1ô	ð ×Ñ !Ò# R¨1¡W¡RØ˜!‘)�$øðð ‡I�I„KØ�a‘—‘˜[¨"Ó-€IØ‡J�Jð MàOXÈlô\ð ‡I�I„KØ‡H�H„JÜ	Ð! "  X¨d¨VÐ
4Õ5øð 	�˜‘	“ús   Á
CFÆFc                  ó”  — t        t        j                  «      dkD  xr t        j                  d   dv } d }dt        j                  v r>t        j                  j                  d«      }t	        t        j                  |dz      «      }t        dt        › �| rdndz   «       g }| rdnt        }t        d|dz   «      D �]f  }t        |«      }t        |«      }|st        d|› d�«        �n<t        |«      }|st        d|› d	�«        �nt        d|› d
t        |«      › d�«       |D ]æ  \  }	}}
|rt        |«      |k\  r nÐ|
r
|
t        k  rŒ%t        d|	d d › d�dd¬«       t        |«      \  }}}|rt        |«      dk  rt        d«       Œe|xs |	}|xs |
}t        j                  dd|«      d d j!                  «       }|j#                  t        |||||t        dœ«       t        dt        |«      › d�«       t%        j&                  d«       Œè |s�ŒWt        |«      |k\  s�Œg n |rt)        |«       t        dt        |«      › d�«       y )Nr   )Ú1z--incrementalz-iz--limitu	   
çˆ¬å�–: u	    [å¢žé‡�]r   u     ç¬¬u   é¡µ: â�Œ è¯·æ±‚å¤±è´¥u
   é¡µ: 0 æ�¡u   é¡µ: u    æ�¡z  é-   z...ú T)ÚendÚflushé2   u	   æ— æ­£æ–‡r6   rA   )r@   r)   r   r<   rC   r,   rE   zOK (u   å­—)g333333Ó?u   
âœ… å®Œæˆ�! å…± )r:   ÚsysÚargvÚindexÚintrL   Ú	SITE_NAMEÚ	MAX_PAGESÚranger4   r   r-   ÚCUTOFFr>   r   r9   r    r$   ÚtimeÚsleeprQ   )ÚincrementalÚlimitÚidxÚresultsÚpagesr3   r   r%   r&   r)   Ú	list_dateÚdtÚdater<   Úfinal_titleÚ
final_daterC   s                    r   Úmainrm   o   s+  € Ü”c—h‘h“- !Ñ#ÒS¬¯©°©Ð7SÐ(S€KØ€EØ”C—H‘HÑÜ�h‰h�n‰n˜YÓ'ˆÜ”C—H‘H˜S ™U‘OÓ$ˆÜ	ˆJ”y�kÐ
"±[¡kÀbÑ
IÔJØ€GÙ‰A¤)€EÜ�a˜˜q™Ó!ó 2ˆÜ˜4Ó ˆÜ�S‹zˆÙÜ�E˜$˜Ð4Ð5Ô6ÚÜ˜4Ó ˆÙÜ�E˜$˜˜zÐ*Ô+ÚÜ��d�V˜5¤ U£ ¨DÐ1Ô2Ø%*ò 	Ñ!ˆE�3˜	Ùœ˜W›¨Ò.±Ù˜Y¬Ò/°Ü�B�u˜S˜b�z�l #Ð&¨C°tÕ<Ü ,¨SÓ 1ÑˆB��gÙœc '›l¨RÒ/Ü�kÔ"ØØš+ ˆKØÒ* ˆJÜ—f‘f˜Z¨¨WÓ5°d°sÐ;×AÑAÓCˆGØ�N‰N¬¸[Ø w¸7Ø&´	ñ;ô <ô �Dœ˜W›˜ dÐ+Ô,Ü�J‰J�s�Oð	ó  ”S˜“\ UÔ*©Eð72ñ: Ü�WÔÜ	Ðœs 7›|˜n¨DÐ
1Õ2r.   Ú__main__u   â�± z.1fÚs)!Ú__doc__rY   Úosr   ra   ÚjsonrF   r   r   r   r   Úurllib3Údisable_warningsr]   r   r1   Úgetenvr   r^   ÚnowÚutcÚstrftimer`   r   r   r-   r4   r>   rQ   rm   Ú__name__Út0rL   © r.   r   ú<module>r|      sì   ðñ÷
 (× '× 'ß 2Ñ 2ß Û 	Ø €× Ñ Ô à €	Ø#€ØU€ØˆB�I‰I�kÐ#4Ó5€	Ø€	Ø
ˆ(�,‰,�x—|‘|Ó
$¡y°eÔ'<Ñ
<×	FÑ	FÀzÓ	R€ØÐUÐ
V€òòòZò!$òF6ò>(3ðT ˆzÒØ	ˆ�‰‹€BÙ„FÙ	ˆD��—‘“˜R‘ Ð$ AÐ
&Õ'ð r.   