Ë
    *Ìzj×&  ã                   óž   — 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)uç  
crawl_jshbgz_hpgs.py â€” æ±Ÿè‹�çŽ¯ä¿�å…¬ä¼—ç½‘ã€ŒçŽ¯è¯„å…¬ç¤ºã€�æ �ç›®
http://www.jshbgz.cn/hpgs/
TRS WCM ç³»:
- åˆ—è¡¨: ./YYYYMM/tYYYYMMDD_ID.html é“¾æŽ¥ + æ ‡é¢˜
- åˆ†é¡µ: TRS createPageHTML(50,0,"index","html") â†’ index_N.html (20æ�¡/é¡µ, å…±50é¡µâ‰ˆ1000æ�¡)
- è¯¦æƒ…: /hpgs/YYYYMM/tYYYYMMDD_ID.html
    æ ‡é¢˜ td.black21, æ—¥æœŸ å�‘å¸ƒæ—¶é—´ï¼šYYYY-MM-DD, æ­£æ–‡ td#Zoom > div.TRS_Editor > div.Custom_UnionStyle
- é™„ä»¶: æ­£æ–‡å†… ./P0*.docx (å…¬ä¼—æ„�è§�è¡¨ç­‰), å†…åµŒURLä¿�ç•™
é    Nzhttp://www.jshbgz.cnu   æ±Ÿè‹�çŽ¯ä¿�å…¬ä¼—ç½‘zcrawl_jshbgz_hpgs.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_jshbgz_hpgs.pyÚclean_titler   "   sN   € áØØ	�‰‹	€AÜ
�‰Ð.°°A¼R¿T¹TÔB€AØ	�‰‹	€AÜ
�‰ˆv�s˜AÓ€AØ€Hó    c           	      ó¤  ‡‡— | }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                  ¬«      }g Šˆfd„}t        j                  d	||t         j                  t         j                  z  ¬«      }d
„ }t        j                  d||t         j                  ¬«      }g Šˆfd„}t        j                  d||t         j                  t         j                  z  ¬«      }t        j                  dd|«      }t	        j
                  |«      }t        ‰d«      D ]&  \  }\  }}}|j                  d|› d�d|› d|› d�«      }Œ( t        ‰d«      D ]  \  }}	|j                  d|› d�|	«      }Œ g }
|j                  d«      D ]D  }|j                  «       }|sŒt        j                  dd|«      }|sŒ0|
j                  d|› d�«       ŒF dj                  |
«      ‰fS )u¥   HTML -> ä¿�ç•™ <p> æ®µè�½ HTMLï¼ˆsearch_app æ¸²æŸ“ä¾�èµ– <p>/<table> æ£€æµ‹ï¼‰ï¼Œæ®µå†…å‰¥æ ‡ç­¾,
    é™„ä»¶å†…åµŒ <a href> ç»�å¯¹URL, åŽ» script/style, åˆ ç©ºæ®µè�½z<(script|style)[^>]*>.*?</\1>r   r   z<(p|div|li|tr|h[1-6])[^>]*>ú
z</(p|div|li|tr|h[1-6])>z	<br\s*/?>c                 óž  •— | j                  d«      | j                  d«      }}t        j                  dd|«      }t        j                  |«      j                  «       }|r"|j                  d«      s|j                  d«      r|xs dS t        j                  j                  t        |«      }‰j                  |||f«       dt        ‰«      › d�S )	Né   é   ú<[^>]+>r   ú#Ú
javascriptÚ__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_repl9   s¦   ø€ Ø—G‘G˜A“J §¡¨£
ˆcˆÜ�f‰f�Z  SÓ)ˆÜ×Ñ Ó$×*Ñ*Ó,ˆÙ�d—o‘o cÔ*¨d¯o©o¸lÔ.KØ’9˜"ÐÜ—,‘,×&Ñ&¤t¨TÓ2ˆØ�‰�d˜G SÐ)Ô*Øœ#˜e›*˜ RÐ(Ð(r   z&<a\s[^>]*href="([^"]+)"[^>]*>(.*?)</a>c                 óx   — | j                  d«      }t        j                  j                  t        |«      }d|› d�S )Nr   z
<img src="z">)r   r   r    r!   r"   )r%   ÚsrcÚabs_srcs      r   Ú	_img_replzhtml_to_text.<locals>._img_replD   s4   € Ø�g‰g�a‹jˆÜ—,‘,×&Ñ&¤t¨SÓ1ˆØ˜G˜9 BÐ'Ð'r   z<img[^>]*src="([^"]+)"[^>]*>c                 ób   •— ‰j                  | j                  d«      «       dt        ‰«      › d�S )Nr   Ú	__TABLE__r   )r#   r   r$   )r%   Útabless    €r   Ú_table_replz!html_to_text.<locals>._table_replK   s*   ø€ Ø�‰�a—g‘g˜a“jÔ!Øœ3˜v›;˜- rÐ*Ð*r   z<table.*?</table>r   r   r   r   z	<a href="ú" target="_blank">z</a>r0   z[ \t\u00a0]+r   z<p>z</p>)r
   r   ÚSr   r   r   Ú	enumerateÚreplaceÚsplitr	   r#   Újoin)Úhtml_segÚsegr*   r.   r2   Úir&   r(   r'   r   ÚpartsÚliner)   r1   s               @@r   Úhtml_to_textr>   -   s  ù€ ð €Cä
�&‰&Ð1°2°sÄ"Ç$Á$ÌÏÉÁ+Ô
N€Cä
�&‰&Ð/°°sÄ"Ç$Á$Ô
G€CÜ
�&‰&Ð+¨T°3¼b¿d¹dÔ
C€CÜ
�&‰&�˜t S´·±Ô
5€Cà€Eô)ô �&‰&Ð:¸JÈÔSU×SWÑSWÔZ\×Z^ÑZ^ÑS^Ô
_€Cò(ô �&‰&Ð0°)¸SÌÏÉÔ
M€Cà€Fô+ô �&‰&Ð% {°C¼r¿t¹tÄbÇdÁd¹{Ô
K€Cä
�&‰&�˜R Ó
%€CÜ
×
Ñ
˜CÓ
 €Cä#,¨U°AÓ#6ò ^ÑˆÑˆD�'˜3Ø�k‰k˜H Q C rÐ*¨i¸°yÐ@RÐSVÐRWÐW[Ð,\Ó]‰ð^ä˜& !Ó$ò 0‰ˆˆ1Ø�k‰k˜I a S¨Ð+¨QÓ/‰ð0ð €EØ—	‘	˜$“ò 'ˆØ�z‰z‹|ˆÙØÜ�v‰v�o s¨DÓ1ˆÙØà�‰�s˜4˜& Ð%Õ&ð'ð �9‰9�UÓ˜UÐ"Ð"r   c                 óœ  — t        j                  d| t         j                  «      }g }|D ]Ÿ  \  }}t        |«      }|sŒt        j
                  j                  t        dz   |«      }t        j                  d|«      }|r7|j                  d«      ›d|j                  d«      ›d|j                  d«      ›�nd}|j                  |||f«       Œ¡ |S )	u)   åˆ—è¡¨é¡µ -> [(title, art_url, pub_date)]z6<a href="(\./20\d{4}/t\d{8}_\d+\.html)"[^>]*>(.*?)</a>ú/hpgs/zt(\d{4})(\d{2})(\d{2})_r   ú-r   é   r   )r
   Úfindallr4   r   r   r    r!   r"   Úsearchr   r#   )	Úhtml_srcÚitemsÚoutr&   r   ÚtitleÚart_urlr%   Úpubs	            r   Ú
parse_listrK   e   s²   € ä�J‰JØAØ”"—$‘$ó€Eð €CØò *‰ˆˆaÜ˜A“ˆÙØÜ—,‘,×&Ñ&¤t¨h¡¸Ó=ˆä�I‰IÐ0°$Ó7ˆÙCD˜AŸG™G A�J¨¯©°­
°A·G±G¸A´JÑ?È"ˆØ�
‰
�E˜7 CÐ(Õ)ð*ð €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  }d}| j                  d«      }|dk  r| j                  d«      }|dk\  �r`| |d }|j                  d«      }|dk\  �rD|dz  }d}	|}
|
t        |«      k  �r,|j                  d|
«      }|j                  d|
«      }|dk  r�n|dk\  r||k  r|	dz  }	|d
z   }
nÜ|	dz  }	|	dk(  rÍ||| j                  «       }|||dz    }t        j                  d|t         j                  t         j                  z  «      D ]x  }|j	                  d«      }t        t        j                  dd|j	                  d	«      «      «      }|sŒFt        j                  j                  t         dz   |«      }|d|› d|› d�z  }Œz n|dz   }
|
t        |«      k  r�Œ,|xs d|xs d|g fS )u4   è¯¦æƒ…é¡µ -> (title, publish_date, body_html, links)z-<td align="center" class="black21">(.*?)</td>r   r   z<title>(.*?)</title>rA   r   uN   å�‘å¸ƒæ—¶é—´[ï¼š:]\s*(?:</td>)?\s*(?:<td[^>]*>)?\s*(\d{4})-(\d{1,2})-(\d{1,2})z%s-%02d-%02dr   rB   z	id="Zoom"z	id='Zoom'Nú>z<tdz</td>iÐ  zC<a href="(\./[^"]+\.(?:docx?|pdf|xlsx?|rar|zip|7z))"[^>]*>(.*?)</a>r   r@   z
<p><a href="r3   z</a></p>é   )r
   rD   r4   r   r   r7   ÚintÚfindr$   r	   Úfinditerr   r   r   r    r!   r"   )rE   rI   r%   rH   ÚpublishÚ	body_htmlÚzir:   ÚstartÚdepthÚposÚtd_openÚtd_closeÚatt_segÚahrefÚatxtÚabs_as                    r   Úparse_detailr^   w   sp  € ô 	�	‰	ÐBÀHÌbÏdÉdÓS€AÙ'(ŒK˜Ÿ™ ›
Ô#¨b€EÙÜ�I‰IÐ-¨x¼¿¹Ó>ˆÙÜ §¡¨£
× 0Ñ 0°Ó 5°aÑ 8Ó9ˆEä
�	‰	ÐcÐemÓn€AØ€GÙØ  A§G¡G¨A£J´°A·G±G¸A³J³ÄÀQÇWÁWÈQÃZÃÐ#QÑQˆà€IØ	�‰�{Ó	#€BØ	ˆA‚vØ�]‰]˜;Ó'ˆØ	ˆQƒwØ�r�sˆmˆà—‘˜“ˆØ�A‹:Ø�Q‰JˆEØˆEØˆCØœ˜C›“.àŸ(™( 5¨#Ó.�ØŸ8™8 G¨SÓ1�Ø˜a’<ÙØ˜a’< G¨hÒ$6Ø˜Q‘J�EØ! A™+‘Cà˜Q‘J�EØ ’zØ$'¨¨hÐ$7×$=Ñ$=Ó$?˜	à"% h¨x¸$©Ð"?˜Ü!#§¡Ø fØ '¬¯©´·±©ó"6ò f˜Að %&§G¡G¨A£J˜EÜ#.¬r¯v©v°jÀ"ÀaÇgÁgÈaÃjÓ/QÓ#R˜DÚ#Ü(.¯©×(<Ñ(<¼TÀH¹_ÈeÓ(T Ø )¨~¸e¸WÐDVÐW[ÐV\Ð\dÐ-eÑ e¡	ðfð Ø" Q™,�Cð1 œ˜C›”.ð2 Š=�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 �]Ä  }
|
dk(  r
t&        › d�}nt&        › d|
› d�}	 |	j)                  |t*        t,        ¬«      }d|_        t5        |j6                  «      }t3        d|
› dt9        |«      › d|› �«       |sŒx|D �]2  \  }}}	 |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«       |jK                  «        |dz  }t3        d!|› d"|d d# › �«       �Œ5 tM        jN                  d%«       �ŒÇ |jQ                  «        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 æ•°æ�®åº“è·¯å¾„)ra   rb   z--script-name)ra   z/mnt/r   r@   z/hpgs/index_z.html)ÚheadersÚtimeoutzutf-8ú[u   ] è¯·æ±‚å¤±è´¥ z: u	   ] åˆ—è¡¨ u    æ�¡ z?SELECT COUNT(*) FROM gov_raw WHERE page_url=? AND script_name=?u     è·³è¿‡ç©ºæ­£æ–‡: r   z

c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r   N© )Ú.0Úas     r   ú	<genexpr>zmain.<locals>.<genexpr>ä   s   è ø€ Ò%>¨q a¨¥dÑ%>ù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<tablez  + r   é(   z  ERR g333333Ó?u   å®Œæˆ�: æ–°å¢ž u
    / é‡�å¤� u
    / é”™è¯¯ ))ÚargparseÚArgumentParserÚadd_argumentrO   ÚSCRIPT_NAMEÚ
parse_argsÚdbÚscript_namer   ÚosÚpathÚ
expanduserÚsqlite3ÚconnectÚcursorÚrequestsÚSessionÚrangeÚpagesr"   ÚgetÚHEADERSÚTIMEOUTÚencodingÚ	ExceptionÚprintrK   Útextr$   ÚexecuteÚfetchoner^   r	   r>   r8   Ú	SITE_NAMEÚ
GROUP_NAMEÚcommitÚtimeÚsleepÚclose)ÚapÚargsÚdb_pathrs   ÚconnÚcurÚ	new_countÚ	dup_countÚ	err_countÚsessionÚpageÚurlÚrÚerF   rH   rI   Úpub_dateÚdrÚd_titleÚd_dateÚcontent_htmlr)   ÚcontentÚ	links_outÚatt_txtÚsummarys                              r   Úmainr£   ®   sr  € Ü	×	 Ñ	 Ó	"€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™Ó(ó 2ˆØ�1Š9Ü�F˜&�/‰Cä�F˜, t f¨EÐ2ˆCð	Ø—‘˜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Ü%1°,Ó%?Ñ"�˜ÙBK˜&Ÿ+™+Ñ%>°IÔ%>Ô>ÐQS�Ù+2˜' $ 3™-¸�Ø—‘ðAä ¨°%¸À1ÀgÈrÐSUÐWXÐZaÐceØ˜g¤z¸ÀGÑ8K±1ÐQRÐT_ðaôð —‘”Ø˜Q‘�	Ü˜˜X˜J a¨¨c¨r¨
 |Ð4Ö5ð=!	2ôD 	�
‰
�3Žðe2ðh 	‡J�J„LÜ	ˆO˜I˜; j°°¸:ÀiÀ[Ð
QÕRøô[ ò 	Ü�A�d�V˜?¨3¨%¨r°!°Ð5Ô6Ø˜‰NˆIÝûð	ûôN ò 2Ø˜Q‘�	Ü˜˜u S b˜z˜l¨"¨Q¨CÐ0×1Ò1ûð2ús>   Ä)#K6Æ/L&Æ<A$L&È!BL&Ë6	L#Ë?LÌL#Ì&	MÌ/MÍMÚ__main__)Ú__doc__rm   Úhtmlr   rt   r
   rw   rŠ   Úurllib.parser   rz   r"   r‡   rp   rˆ   r   r€   r   r>   rK   r^   r£   Ú__name__rg   r   r   ú<module>r©      s~   ðñ	ó Û Û 	Û 	Û Û Û ã à€Ø#€	Ø$€Ø€
àØ'ñ€ð €òò5#òpò$49ònISðX ˆzÒÙ…Fð r   