Ë
    ¸¬ujJ  ã                   óž   — 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
Z
dZdZdZdZddd	œZd
Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uv  
crawl_jsrthj_xmgs.py â€” æ±Ÿè‹�æ¶¦å¤©çŽ¯å¢ƒç§‘æŠ€æœ‰é™�å…¬å�¸ã€Œé¡¹ç›®å…¬ç¤ºã€�æ �ç›®
http://www.jsrthj.com/article/29/1.aspx
ASP.NET ç«™:
- åˆ—è¡¨: dl.news_dl > dt > a.dt_1[href=/article/show/{id}.aspx][title] + span.dt_2[YYYY-MM-DD]
- åˆ†é¡µ: /article/29/{N}.aspx (10æ�¡/é¡µ, å…±65é¡µâ‰ˆ650æ�¡)
- è¯¦æƒ…: /article/show/{id}.aspx
    æ ‡é¢˜ div.agent_tit, æ—¥æœŸ div.agent_data(æ›´æ–°æ—¶é—´ï¼š2026/6/24 15:58:15), æ­£æ–‡ div.agent_con
- æ­£æ–‡ä¸ºçº¯æ–‡æœ¬å…¬ç¤º(çŽ¯è¯„ä¸€æ¬¡/æŠ¥æ‰¹å‰�/éªŒæ”¶), æ—  PDF é™„ä»¶;
  "é™„ä»¶"=æ­£æ–‡å†…é“¾æŽ¥(ç™¾åº¦ç½‘ç›˜æŠ¥å‘Šä¸‹è½½é“¾æŽ¥+æ��å�–ç � / mee.gov.cn å…¬ä¼—æ„�è§�è¡¨) â†’ å†…åµŒURLä¿�ç•™
é    Nzhttp://www.jsrthj.comu   æ±Ÿè‹�æ¶¦å¤©çŽ¯å¢ƒzcrawl_jsrthj_xmgs.pyu   æ±Ÿè‹�zkMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36zzh-CN,zh;q=0.9)z
User-AgentzAccept-Languageé   c                 óÈ   — | sy| j                  «       } t        j                  dd| t        j                  ¬«      } | j                  «       } t        j                  dd| «      } | S )u=   æ ‡é¢˜æ¸…æ´—: strip &middot;&nbsp;&#32; å®žä½“å‰�ç¼€ä¸Žç©ºç™½Ú z&middot;|&nbsp;|&#160;|&#32;©Úflagsz\s+ú )ÚstripÚreÚsubÚI)Úts    ú&/root/gov_crawler/crawl_jsrthj_xmgs.pyÚclean_titler   #   sN   € áØØ	�‰‹	€AÜ
�‰Ð.°°A¼R¿T¹TÔB€AØ	�‰‹	€AÜ
�‰ˆv�s˜AÓ€AØ€Hó    c           	      ó  ‡— | }g Šˆfd„}t        j                  d||t         j                  t         j                  z  ¬«      }t        j                  dd|t         j                  t         j                  z  ¬«      }t        j                  dd|t         j                  ¬«      }t        j                  dd	|t         j                  ¬«      }t        j                  d
d|«      }t	        j
                  |«      }t        ‰d«      D ]&  \  }\  }}}|j                  d|› d�d|› d|› d�«      }Œ( t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }|j                  «       ‰fS )uP   HTML -> æ–‡æœ¬, ä¿�ç•™ a é“¾æŽ¥(å†…åµŒURL)ä¸Žè¡¨æ ¼, åŽ» script/style, 

 åˆ†æ®µc                 ó|  •— | j                  d«      | j                  d«      }}t        j                  dd|«      }t        j                  |«      j                  «       }|r|j                  d«      r|xs dS t        j                  j                  t        |«      }‰j                  |||f«       dt        ‰«      › d�S )Né   é   ú<[^>]+>r   ú#Ú__LINK__Ú__)Úgroupr
   r   Úhtml_libÚunescaper	   Ú
startswithÚurllibÚparseÚurljoinÚBASEÚappendÚlen)ÚmÚhrefÚtxtÚabs_urlÚlinkss       €r   Ú
_link_replz html_to_text.<locals>._link_repl4   s›   ø€ Ø—G‘G˜A“J §¡¨£
ˆcˆÜ�f‰f�Z  SÓ)ˆÜ×Ñ Ó$×*Ñ*Ó,ˆÙ�d—o‘o cÔ*Ø’9˜"ÐÜ—,‘,×&Ñ&¤t¨TÓ2ˆØ�‰�d˜G SÐ)Ô*Øœ#˜e›*˜ RÐ(Ð(r   z&<a\s[^>]*href="([^"]+)"[^>]*>(.*?)</a>r   z<(script|style)[^>]*>.*?</\1>r   z</(p|div|li|tr|h[1-6]|br)>ú

z<(p|div|li|tr|h[1-6]|br)[^>]*>ú
r   r   r   r   z	<a href="z" target="_blank">z</a>z\rz\n{3,}z[ \t\u00a0]+r   )	r
   r   ÚSr   r   r   Ú	enumerateÚreplacer	   )Úhtml_segÚsegr(   Úir$   r&   r%   r'   s          @r   Úhtml_to_textr1   .   sH  ø€ à
€Cà€Eô)ô �&‰&Ð:¸JÈÔSU×SWÑSWÔZ\×Z^ÑZ^ÑS^Ô
_€Cä
�&‰&Ð1°2°sÄ"Ç$Á$ÌÏÉÁ+Ô
N€Cä
�&‰&Ð.°¸Ä2Ç4Á4Ô
H€CÜ
�&‰&Ð2°D¸#ÄRÇTÁTÔ
J€CÜ
�&‰&�˜R Ó
%€CÜ
×
Ñ
˜CÓ
 €Cä#,¨U°AÓ#6ò ^ÑˆÑˆD�'˜3Ø�k‰k˜H Q C rÐ*¨i¸°yÐ@RÐSVÐRWÐW[Ð,\Ó]‰ð^ä
�&‰&�˜˜CÓ
 €CÜ
�&‰&�˜F CÓ
(€CÜ
�&‰&� # sÓ
+€CØ�9‰9‹;˜ÐÐr   c                 óì   — t        j                  d| t         j                  «      }g }|D ]G  \  }}}t        j                  j                  t        |«      }|j                  t        |«      ||f«       ŒI |S )u)   åˆ—è¡¨é¡µ -> [(title, art_url, pub_date)]zt<dl class="news_dl">\s*<dt><a href="([^"]+)"[^>]*>(.*?)</a>\s*<span class="dt_2">\[(\d{4}-\d{2}-\d{2})\]</span></dt>)	r
   Úfindallr+   r   r   r   r    r!   r   )Úhtml_srcÚitemsÚoutr$   r   ÚdÚart_urls          r   Ú
parse_listr9   O   sl   € ä�J‰JØØ”"—$‘$ó€Eð €CØò 1‰
ˆˆa�Ü—,‘,×&Ñ&¤t¨TÓ2ˆØ�
‰
”K “N G¨QÐ/Õ0ð1ð €Jr   c                 ó   — t        j                  d| t         j                  «      }|rt        |j	                  d«      «      nd}|sSt        j                  d| t         j                  «      }|r,t        |j	                  d«      j                  d«      d   «      }t        j                  d| «      }d}|rGd|j	                  d«      t        |j	                  d	«      «      t        |j	                  d
«      «      fz  }t        j                  d| t         j                  «      }d}|r|j	                  d«      j                  «       }|xs d|xs d|g fS )u4   è¯¦æƒ…é¡µ -> (title, publish_date, body_html, links)z"<div class="agent_tit">(.*?)</div>r   r   z<title>(.*?)</title>ú-r   u0   æ›´æ–°æ—¶é—´[ï¼š:]\s*(\d{4})/(\d{1,2})/(\d{1,2})z%s-%02d-%02dr   é   z"<div class="agent_con">(.*?)</div>N)r
   Úsearchr+   r   r   ÚsplitÚintr	   )r4   r8   r#   ÚtitleÚpublishÚ	body_htmls         r   Úparse_detailrC   [   s  € ô 	�	‰	Ð7¸Ä2Ç4Á4ÓH€AÙ'(ŒK˜Ÿ™ ›
Ô#¨b€EÙÜ�I‰IÐ-¨x¼¿¹Ó>ˆÙÜ §¡¨£
× 0Ñ 0°Ó 5°aÑ 8Ó9ˆEä
�	‰	ÐEÀxÓP€AØ€GÙØ  A§G¡G¨A£J´°A·G±G¸A³J³ÄÀQÇWÁWÈQÃZÃÐ#QÑQˆä
�	‰	Ð7¸Ä2Ç4Á4ÓH€AØ€IÙØ—G‘G˜A“J×$Ñ$Ó&ˆ	ØŠ=�D˜'š/ T¨9°bÐ8Ð8r   c                  óÖ  — t        j                  «       } | j                  dt        dd¬«       | j                  ddd¬«       | j                  d	t        ¬
«       | j                  «       }|j                  }|j                  }|j                  d«      st        j                  j                  |«      }t        j                  |«      }|j                  «       }d}d}d}t        j                   «       }	t#        d|j$                  dz   «      D �]Ù  }
t&        › d|
› d�}	 |	j)                  |t*        t,        ¬«      }d|_        t5        |j6                  «      }t3        d|
› dt9        |«      › d|› �«       |sŒi|D �]V  \  }}}	 |j;                  d||f«       |j=                  «       d   dkD  r|dz  }Œ9|	j)                  |t*        t,        ¬«      }d|_        t?        |j6                  |«      \  }}}}|jA                  «       st3        d|d d › �«       |dz  }Œž|r|}|r|}tC        |«      \  }}|rdjE                  d„ |D «       «      nd}|r|d d nd}|j;                  dtF        ||||d|ddd|dd|tH        d|v rdnd|f«       |j;                  d |jJ                  |tF        |f«       |jM                  «        |dz  }t3        d!|› d"|d d# › �«       �ŒY tO        jP                  d%«       �ŒÜ |jS                  «        t3        d&|› d'|› d(|› �«       y # t0        $ r$}t3        d|
› d|› d|› �«       |dz  }Y d }~�Œ*d }~ww xY w# t0        $ r$}|dz  }t3        d$|d d › d|› �«       Y d }~�Œïd }~ww xY w))Nz--pagesr   u   æŠ“å�–é¡µæ•°)ÚtypeÚdefaultÚhelpz--dbz/mnt/data/search.dbu   SQLite æ•°æ�®åº“è·¯å¾„)rF   rG   z--script-name)rF   z/mnt/r   z/article/29/z.aspx)ÚheadersÚtimeoutzutf-8ú[u   ] è¯·æ±‚å¤±è´¥ z: u	   ] åˆ—è¡¨ u    æ�¡ z?SELECT COUNT(*) FROM gov_raw WHERE page_url=? AND script_name=?u     è·³è¿‡ç©ºæ­£æ–‡: é   r)   c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r   N© )Ú.0Úas     r   ú	<genexpr>zmain.<locals>.<genexpr>¤   s   è ø€ Ò%6¨q a¨¥dÑ%6ùs   ‚r   iô  zíINSERT INTO gov_raw (site_name, source_url, page_url, title, publish_date, date_rank, summary, status, category, visits, content, tags, industry, attachments, group_name, has_table, script_name) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)Úotherz<tablezJINSERT INTO gov_search (rowid, title, site_name, summary) VALUES (?,?,?,?)z  + r   é(   z  ERR g333333Ó?u   å®Œæˆ�: æ–°å¢ž u
    / é‡�å¤� u
    / é”™è¯¯ )*ÚargparseÚArgumentParserÚadd_argumentr?   ÚSCRIPT_NAMEÚ
parse_argsÚdbÚscript_namer   ÚosÚpathÚ
expanduserÚsqlite3ÚconnectÚcursorÚrequestsÚSessionÚrangeÚpagesr    ÚgetÚHEADERSÚTIMEOUTÚencodingÚ	ExceptionÚprintr9   Útextr"   ÚexecuteÚfetchonerC   r	   r1   ÚjoinÚ	SITE_NAMEÚ
GROUP_NAMEÚ	lastrowidÚcommitÚtimeÚsleepÚclose)ÚapÚargsÚdb_pathrY   ÚconnÚcurÚ	new_countÚ	dup_countÚ	err_countÚsessionÚpageÚurlÚrÚer5   r@   r8   Úpub_dateÚdrÚd_titleÚd_dateÚcontent_htmlr'   ÚcontentÚ_Úatt_txtÚsummarys                              r   Úmainr‹   q   s€  € Ü	×	 Ñ	 Ó	"€BØ‡O�O�I¤C°¸€OÔHØ‡O�O�FÐ$9Ð@X€OÔYØ‡O�O�O¬[€OÔ9Ø�=‰=‹?€Dà�g‰g€GØ×"Ñ"€KØ×Ñ˜gÔ&Ü—'‘'×$Ñ$ WÓ-ˆä�?‰?˜7Ó#€DØ
�+‰+‹-€CØ€IØ€IØ€Iä×ÑÓ €Gä�a˜Ÿ™ a™Ó(ó 1ˆÜ��l 4 &¨Ð.ˆð	Ø—‘˜C¬¼'�ÓBˆAØ ˆAŒJô
 ˜1Ÿ6™6Ó"ˆÜ��$��y¤ U£ ¨E°#°Ð7Ô8ÙØØ(-ó #	2Ñ$ˆE�7˜Hð"2Ø—‘Ð]Ð`gÐitÐ_uÔvØ—<‘<“> !Ñ$ qÒ(Ø ‘N�IØØ—[‘[ ´'Ä7�[ÓK�Ø%�”Ü7CÀBÇGÁGÈWÓ7UÑ4�˜ ¨uØ#×)Ñ)Ô+ÜÐ/°°c°r°
¨|Ð<Ô=Ø ‘N�IØÙØ#�EÙØ%�HÜ)¨,Ó7‘
�˜Ù:;˜&Ÿ+™+Ñ%6°AÔ%6Ô6À�Ù+2˜' $ 3™-¸�Ø—‘ðAä ¨°%¸À1ÀgÈrÐSUÐWXÐZaÐceØ˜g¤z¸ÀGÑ8K±1ÐQRÐT_ðaôð —‘Ø`Ø—]‘] E¬9°gÐ>ôð —‘”Ø˜Q‘�	Ü˜˜X˜J a¨¨c¨r¨
 |Ð4Ö5ðA#	2ôH 	�
‰
�3Žðc1ðf 	‡J�J„LÜ	ˆO˜I˜; j°°¸:ÀiÀ[Ð
QÕRøô_ ò 	Ü�A�d�V˜?¨3¨%¨r°!°Ð5Ô6Ø˜‰NˆIÝûð	ûôR ò 2Ø˜Q‘�	Ü˜˜u S b˜z˜l¨"¨Q¨CÐ0×1Ò1ûð2ús>   Ä#LÅ=/L;Æ-A$L;ÈB9L;Ì	L8ÌL3Ì3L8Ì;	M(ÍM#Í#M(Ú__main__)Ú__doc__rS   Úhtmlr   rZ   r
   r]   rr   Úurllib.parser   r`   r    rn   rV   ro   re   rf   r   r1   r9   rC   r‹   Ú__name__rM   r   r   ú<module>r‘      s}   ðñ
ó Û Û 	Û 	Û Û Û ã à€Ø €	Ø$€Ø€
àØ'ñ€ð €òòòB	ò9ò,HSðV ˆzÒÙ…Fð r   