Ë
    V_Šj7'  ã                   óT  — 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Zddlm	Z	 ddl
mZ ej                  j                  dd«       ddlmZ ddlZdZd„ Zd	Zd
ZdZddddœZdZ ej0                  «       Zej4                  j7                  e«       d„ Zd„ Zd„ Zd„ Ze dk(  r e«        yy)u\  å¿ƒè¿žå¿ƒåŒ–å­¦å·¥ä¸šé›†å›¢-æ–°é—»ä¸­å¿ƒçˆ¬è™«

åˆ—è¡¨: /News/index/cid/63.html (page 1), /News/index/cid/63/p/N.html (pages 2-71)
è¯¦æƒ…: /News/content/cid/63/id/ID.html
å†…å®¹: div.edit-content > p
æ—¥æœŸ: å�‘å¸ƒæ—¶é—´ï¼šYYYY-MM-DD (span.s1å†…æ–‡æœ¬)
é™„ä»¶: PDFé“¾æŽ¥åœ¨div.bontä¸­

Enterprise ThinkPHP CMS, ~566æ�¡ (2006~2026)
æ—¥è·‘é»˜è®¤5é¡µ
é    N)ÚBeautifulSoup)Úurljoinz/root/gov_crawler)Úpush_to_searchdbz/root/search.dbc                  óÊ   — 	 t        j                  t        d¬«      } | j                  d«       | j                  d«       | S # t        $ r}t        d|› �«       Y d }~y d }~ww xY w)Né   ©ÚtimeoutzPRAGMA busy_timeout=30000zPRAGMA journal_mode=WALz  WARN DB connect: )Úsqlite3ÚconnectÚDB_PATHÚexecuteÚ	ExceptionÚprint)ÚconnÚes     ú%/root/gov_crawler/crawl_hnxlx_news.pyÚget_db_connectionr      sY   € ðÜ�‰œw°Ô3ˆØ�‰Ð0Ô1Ø�‰Ð.Ô/ØˆøÜò ÜÐ# A 3Ð'Ô(Üûðús   ‚>A Á	A"Á
AÁA"zhttps://www.hnxlx.com.cnz/News/index/cid/63.htmlz/News/index/cid/63/p/{}.htmlzoMozilla/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-Languageu   å¿ƒè¿žå¿ƒåŒ–å­¦-æ–°é—»ä¸­å¿ƒc                 óV   — t         j                  | d¬«      }d|_        |j                  S )u   æŠ“å�–åˆ—è¡¨é¡µ HTMLr   r   úutf-8)ÚsessÚgetÚencodingÚtext)ÚurlÚresps     r   Ú
fetch_listr   9   s%   € ä�8‰8�C ˆ8Ó$€DØ€D„MØ�9‰9Ðó    c                 ó¦  — t        | d«      }g }|j                  dd¬«      }|D �])  }|j                  d«      }|sŒ|j                  dd«      }|sŒ-|j                  d«      }|r|j	                  d	¬
«      nd}	|	sŒW|j                  d«      r|}
nt        ||«      }
|j                  d«      }|j                  d«      }d}|r-|r+|j	                  d	¬
«      }|j	                  d	¬
«      }|› d|› �}|rIt        j                  dd|«      j                  dd«      }|j                  dd«      j                  dd«      }|j                  |	|
|dœ«       �Œ, |S )u#   è§£æž�åˆ—è¡¨é¡µï¼Œè¿”å›ž items listúhtml.parserÚlizwow fadeInUp©Úclass_ÚaÚhrefÚ Úh4T©ÚstripÚhttpÚemÚspanú-u   [å¹´æœˆ]u   æ—¥ú/ú.)Útitler   Úpub_date)r   Úfind_allÚfindr   Úget_textÚ
startswithr   ÚreÚsubÚreplaceÚappend)ÚhtmlÚbase_urlÚsoupÚitemsÚlisr!   Úa_tagr%   r'   r0   Ú
detail_urlr+   r,   r1   ÚdayÚ
year_months                   r   Ú
parse_listrC   @   sa  € ä˜˜}Ó-€DØ€Eð �-‰-˜ ^ˆ-Ó
4€CØó %ˆØ—‘˜“ˆÙØà�y‰y˜ Ó$ˆÙØð �W‰W�T‹]ˆÙ+-�—‘ $�Ô'°2ˆÙØð �?‰?˜6Ô"Ø‰Jä  ¨4Ó0ˆJð �W‰W�T‹]ˆØ�w‰w�v‹ˆØˆÙ‘$Ø—+‘+ D�+Ó)ˆCØŸ™¨T˜Ó2ˆJØ$˜ Q s eÐ,ˆHÙÜ—v‘v˜k¨3°Ó9×AÑAÀ%ÈÓLˆHØ×'Ñ'¨¨SÓ1×9Ñ9¸#¸sÓCˆHà�‰ØØØ ñ
ö 	ðC%ðN €Lr   c                 ó4	  — | d   }d|vr$| d   }| j                  dd«      }d|› �}g }||||fS d}|j                  «       j                  |«      r(| d   }| j                  dd«      }d|› �}||d	œg}||||fS 	 t        j                  |d
¬«      }d|_        |j
                  }t        |d«      }
|
j                  dd¬«      }|r|j                  d¬«      n| d   }|
j                  dd¬«      }d}|r;|j                  d¬«      }t        j                  d|«      }|r|j                  d«      }|s| j                  dd«      }|
j                  dd¬«      }d}|�rMg }|j                  g d¢d¬«      D �]!  }|j                  dk(  �r„|j                  d«      rŒ&|j!                  d«      rŒ8d}|j"                  D �]  }|j                  dk(  r@|j                  d d«      }|j                  d!d«      }|sŒ:t%        ||«      }|d"|› d#|› d$�z  }ŒS|j                  d%k(  r|d&z  }Œh|j                  d'k(  rM|j                  d(d«      }|j                  d¬«      }|r|rt%        ||«      }|d)|› d#|› d$�z  }Œ¸|sŒ»||d*z   z  }ŒÄt'        |t(        «      r||j+                  «       d*z   z  }Œë|j                  d+v sŒú||j                  d*d¬«      d*z   z  }�Œ t        j,                  d,d*|«      j+                  «       }|s�Œ…|j/                  |«       �Œ˜|j                  dk(  rt)        |«      }|j/                  |«       �ŒÅ|j                  dk(  s�ŒÖ|j                  d d«      }|j                  d!d«      }|s�Œþt%        ||«      }|j/                  d"|› d#|› d-�«       �Œ$ d.j1                  |«      }g }|
j                  dd/¬«      }|D ]•  }|j                  d'd¬0«      }|D ]{  }|j                  d(d«      }|j                  d¬«      }|sŒ*|sŒ-|j3                  d1«      rŒ?|j3                  d2«      st%        ||«      }|j/                  ||d	œ«       |d3|› d4|› d5�z  }Œ} Œ— ||||fS # t        $ r4}	t        d|› d|	› �«       | d   | j                  dd«      dg fcY d}	~	S d}	~	ww xY w)6u0   æŠ“å�–è¯¦æƒ…é¡µï¼Œæ��å�–æ ‡é¢˜ã€�æ—¥æœŸã€�æ­£æ–‡r   zhnxlx.com.cnr0   r1   r&   u   [å¤–éƒ¨é“¾æŽ¥] )z.pdfz.docz.docxz.xlsz.xlsxz.zipz.rarz.jpgz.jpegz.pngz.gifz.bmpz.mp4z.mp3u   [æ–‡ä»¶ä¸‹è½½] )Únamer   é   r   r   z  WARN skip: z - Nr    Údivz
news-titler"   Tr(   r,   Ús1z(\d{4}-\d{2}-\d{2})é   zedit-content)ÚpÚtableÚimg)Ú	recursiverJ   rK   rL   ÚsrcÚaltz![z](z) Úbrú
r$   r%   ú[ú )r,   ÚstrongÚbr+   z[ \t]+ú)z

Úbont)r%   zjavascript:r*   z

<p><a href="z">z</a></p>)r   ÚlowerÚendswithr   r   r   r   r   r   r3   r4   r6   ÚsearchÚgroupr2   rE   Úfind_parentÚchildrenr   Ú
isinstanceÚstrr)   r7   r9   Újoinr5   ) Úitemr   r0   r1   ÚcontentÚattachmentsÚext_skipr   r:   r   r<   Ú	title_divÚdate_divÚtxtÚmÚcontent_divÚpartsÚelemÚchildrN   rO   Úfull_srcÚa_hrefÚa_textÚ	full_hrefÚ
table_htmlÚ	bont_divsrW   Ú	pdf_linksr$   r%   r   s                                    r   Úfetch_detailrt   q   sÞ  € à
ˆu‰+€Cð ˜SÑ Ø�W‘ˆØ—8‘8˜J¨Ó+ˆØ# C 5Ð)ˆØˆØ�h ¨Ð4Ð4ðI€Hà
‡y�yƒ{×Ñ˜HÔ%Ø�W‘ˆØ—8‘8˜J¨Ó+ˆØ# C 5Ð)ˆØ %¨cÑ2Ð3ˆØ�h ¨Ð4Ð4ð?Ü�x‰x˜ RˆxÓ(ˆØˆŒØ�y‰yˆô
 ˜˜}Ó-€Dð —	‘	˜%¨�	Ó5€IÙ.7ˆI×Ñ TÐÔ*¸TÀ'¹]€Eð �y‰y˜¨ˆyÓ-€HØ€HÙØ×Ñ dÐÓ+ˆÜ�I‰IÐ,¨cÓ2ˆÙØ—w‘w˜q“zˆHáØ—8‘8˜J¨Ó+ˆð —)‘)˜E¨.�)Ó9€KØ€GÚØˆØ×(Ñ(Ò)>È$Ð(ÓOó )	:ˆDØ�y‰y˜CÓà—9‘9˜S”>Øà×#Ñ# GÔ,ØØ�Ø!Ÿ]™]ó E�EØ—z‘z UÒ*Ø#Ÿi™i¨¨rÓ2˜Ø#Ÿi™i¨¨rÓ2˜ÚÜ'.¨s°CÓ'8˜HØ R¨ u¨B¨x¨j¸Ð#;Ñ;™CØŸ™ tÒ+Ø˜t™™ØŸ™ sÒ*Ø!&§¡¨6°2Ó!6˜Ø!&§¡°d Ó!;˜Ù!¡fÜ(/°°VÓ(<˜IØ Q v h¨b°°¸2Ð#>Ñ>™CÚ#Ø 6¨C¡<Ñ/™CÜ# E¬3Ô/Ø˜uŸ{™{›}¨sÑ2Ñ2™ØŸ™Ð'DÒDØ˜uŸ~™~¨c¸˜~Ó>ÀÑDÑDšð)Eô* —f‘f˜Y¨¨SÓ1×7Ñ7Ó9�ÛØ—L‘L Ö%Ø—‘˜gÒ%Ü  ›Y�
Ø—‘˜ZÖ(Ø—‘˜eÔ#Ø—h‘h˜u bÓ)�Ø—h‘h˜u bÓ)�ÛÜ& s¨CÓ0�HØ—L‘L 2 c U¨"¨X¨J°aÐ!8Ö9ðS)	:ðT —+‘+˜eÓ$ˆð €KØ—‘˜e¨F�Ó3€IØò 
EˆØ—M‘M #¨D�MÓ1ˆ	Øò 	EˆAØ—5‘5˜ Ó$ˆDØ—:‘: D�:Ó)ˆDÚš T§_¡_°]Õ%CØ—‘ vÔ.Ü" 3¨Ó-�DØ×"Ñ"¨D¸Ñ#>Ô?àÐ-¨d¨V°2°d°V¸8ÐDÑD‘ñ	Eð
Eð �(˜G [Ð0Ð0øôm ò ?Ü�˜c˜U # a SÐ)Ô*Ø�G‰}˜dŸh™h z°2Ó6¸¸BÐ>Õ>ûð?ús   Á8*Q Ñ	RÑ#)RÒRÒRc                  óÄ  — t        j                  d¬«      } | j                  dt        dd¬«       | j	                  «       }g }|j
                  }t        d«       t        t        t        z   «      }t        |t        «      }t        dt        |«      › d	�«       |j                  |«       t        d
|dz   «      D ]–  }t        t        j                  |«      z   }t        d|› d�«       	 t        |«      }t        |t        «      }|st        d«        n@t        dt        |«      › d	�«       |j                  |«       t#        j$                  d«       Œ˜ t        dt        |«      › d	�«       g }	t'        |«      D ]Æ  \  }
}t        d|
dz   › dt        |«      › d|d   d d › d�«       t)        |«      \  }}}}|s|d   }t+        j,                  dd|«      j/                  «       }	 |r|d d nd}|d   |d   ||||t0        |rt3        j4                  |d¬«      nddœ}|	j7                  |«       t#        j$                  d«       ŒÈ t        d t        |	«      › d!�«       t9        |	t0        «       t;        «       }d"}d"}|rw	 |j=                  d#t0        f«      }|j?                  «       d"   }|j=                  d$t0        f«      }|j?                  «       d"   }t        d%|› d&|› d'�«       |jA                  «        t        d)«       y # t         $ r}t        d|› �«       Y d }~ �ŒÇd }~ww xY w#  d}Y �Œ>xY w# t         $ r}t        d(|› �«       Y d }~Œhd }~ww xY w# |jA                  «        w xY w)*Nu"   å¿ƒè¿žå¿ƒåŒ–å­¦-æ–°é—»ä¸­å¿ƒçˆ¬è™«)Údescriptionz--pageséG   u"   æŠ“å�–é¡µæ•°ï¼Œé»˜è®¤å…¨é‡�(71é¡µ))ÚtypeÚdefaultÚhelpz	Page 1...z  found z itemsé   rI   zPage z...z  empty page, stopz  WARN: g      à?z
Total list: z  [r.   z] r0   é(   z\s+rS   iô  r&   r   F)Úensure_ascii)r   Ú
source_urlr0   rb   Úsummaryr1   Ú	site_namerc   g333333Ó?z
Inserting z records...r   z.SELECT COUNT(*) FROM gov_raw WHERE site_name=?z1SELECT COUNT(*) FROM gov_search WHERE site_name=?z
DB: z rows (FTS: z rows)z  WARN DB query: ÚDONE)!ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚpagesr   r   ÚBASE_URLÚLIST_URLrC   ÚlenÚextendÚrangeÚLIST_PAGE_URLÚformatr   ÚtimeÚsleepÚ	enumeratert   r6   r7   r)   Ú	SITE_NAMEÚjsonÚdumpsr9   r   r   r   ÚfetchoneÚclose)ÚparserÚargsÚ	all_itemsÚ	max_pagesr:   r=   Úpager   r   ÚrecordsÚira   r0   r1   rb   rc   r   Úrecordr   Ú	raw_countÚ	fts_countÚcursors                         r   Úmainr¢   ä   sI  € Ü×$Ñ$Ð1UÔV€FØ
×Ñ˜	¬°RÐ>bÐÔcØ×ÑÓ€Dà€IØ—
‘
€Iô 
ˆIÔÜ”h¤Ñ)Ó*€DÜ�tœXÓ&€EÜ	ˆH”S˜“Z�L Ð
'Ô(Ø×Ñ�UÔô �a˜ Q™Ó'ò ˆÜœ×-Ñ-¨dÓ3Ñ3ˆÜ��d�V˜3ÐÔ ð
	Ü˜c“?ˆDÜ˜t¤XÓ.ˆEÙÜÐ*Ô,ÙÜ�HœS ›Z˜L¨Ð/Ô0Ø×Ñ˜UÔ#ô 	�
‰
�3�ðô  
ˆNœ3˜y›>Ð*¨&Ð
1Ô2ð €GÜ˜YÓ'ò ‰ˆˆ4Ü��A�a‘C�5˜œ#˜i›.Ð)¨¨D°©M¸#¸2Ð,>Ð+?¸sÐCÔDÜ0<¸TÓ0BÑ-ˆˆx˜ +áØ˜‘MˆEä—‘�v˜s EÓ*×0Ñ0Ó2ˆð	Ù'.�g˜d˜s‘m°BˆGð
 ˜‘;Ø˜u™+ØØØØ Ü"ÙJUœ4Ÿ:™: kÀÕFÐ[]ñ	
ˆð 	�‰�vÔÜ�
‰
�3�ð3ô8 
ˆLœ˜W›˜ kÐ
2Ô3Ü�WœiÔ(ô Ó€DØ€IØ€IÙð	Ø—\‘\Ø@Ä9À,óˆFð Ÿ™Ó)¨!Ñ,ˆIØ—\‘\ØCÄiÀ\óˆFð Ÿ™Ó)¨!Ñ,ˆIÜ�F˜9˜+ \°)°¸FÐCÔDð �J‰JŒLä	ˆ&…Møôy ò 	Ü�H˜Q˜C�.Ô!Þûð	ûð(	Ø‹GûôD ò 	+ÜÐ% a SÐ)×*Ñ*ûð	+ûð �J‰J�LúsU   Ã&(K9Ä)K9Ç	LÉ7A&L) Ë9	LÌLÌLÌL&Ì)	M
Ì2MÍ M ÍM
Í
M ÍMÚ__main__)!Ú__doc__Úrequestsr6   Úsysr“   r�   Úosr‚   Úbs4r   Úurllib.parser   ÚpathÚinsertÚcrawler_libr   r
   r   r   rˆ   r‰   r�   ÚHEADERSr’   ÚSessionr   ÚheadersÚupdater   rC   rt   r¢   Ú__name__© r   r   ú<module>r³      sÄ   ðñ
ó Û 	Û 
Û Û Û 	Û Ý Ý  à ‡�‡��Ð&Ô 'Ý (Û à
€òð &€Ø$€Ø.€ð DØOØ0ñ€ð +€	à€x×ÑÓ€Ø ‡�× Ñ �GÔ òò.òbp1òfWðt ˆzÒÙ…Fð r   