Ë
    ¸¬uj“!  ã                   ó  — d 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ej                  j                  ej                  j                  ej                  j                  e«      «      d«      ZdZdd	iZd
„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u™   
ä¸­å›½çŸ³åŒ–å®‰åº†åˆ†å…¬å�¸ - å…¬ç¤ºä¿¡æ�¯çˆ¬è™«
http://apw.sinopec.com/apw/csr/environmental_health/

CMS: SharePointï¼Œæ— WAFï¼Œå�¯ç›´æŽ¥ç”¨ requests
é    Nu"   ä¸­ç§‘ç‚¼åŒ–-é¡¹ç›®çŽ¯ä¿�ä¸‰å�Œæ—¶z[http://zrpc.sinopec.com/zrpc/social_responsibility/environmental_protection/simulta_environz\http://zrpc.sinopec.com/zrpc/social_responsibility/environmental_protection/simulta_environ/zquality_results.dbzroot@1.94.217.116z
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36c                 óœ  — g }t        j                  d| «      D ]I  }d|j                  d«      z   }|j                  d«      j                  «       }|j	                  ||dœ«       ŒK |set        j                  d| «      D ]L  }d|j                  d«      z   }|j                  d«      j                  «       }|sŒ9|j	                  ||dœ«       ŒN |S )u"   ä»Žåˆ—è¡¨é¡µHTMLæ��å�–æ‰€æœ‰æ�¡ç›®z<a[^>]*title="([^"]*)"[^>]*href="(/zrpc/social_responsibility/environmental_protection/simulta_environ/\d+/news_[\w_]+\.shtml)"úhttp://zrpc.sinopec.comé   é   )ÚtitleÚhrefzuhref="(/zrpc/social_responsibility/environmental_protection/simulta_environ/\d+/news_[\w_]+\.shtml)"[^>]*>([^<]+)</a>)ÚreÚfinditerÚgroupÚstripÚappend)ÚhtmlÚitemsÚmr   r   s        ú#/root/gov_crawler/crawl_zrpc_env.pyÚget_list_itemsr      sÔ   € à€Eä�[‰[ð  \ð  ^bó  cò 5ˆØ(¨1¯7©7°1«:Ñ5ˆØ—‘˜“
× Ñ Ó"ˆØ�‰˜u¨dÑ3Õ4ð5ñ
 Ü—‘ð  Vð  X\ó  ]ò 	=ˆAØ,¨q¯w©w°q«zÑ9ˆDØ—G‘G˜A“J×$Ñ$Ó&ˆEÚØ—‘ u°dÑ;Õ<ð		=ð
 €Ló    c                 ó´  — ddl }	 |j                  | t        d¬«      }d|_        |j                  }d}t        j                  d|t        j                  «      }|r4t        j                  d	d|j                  d
«      «      j                  «       }|sLt        j                  d|«      }|r4t        j                  dd|j                  d
«      «      j                  «       }d}t        j                  d| «      }|r%|j                  d
«      }|dd › d|dd › d|dd › d�}t        j                  d|t        j                  «      }|rÖ|j                  d
«      }	t        j                  dd|	«      }	t        j                  dd|	«      }	t        j                  dd|	«      }	d„ }
t        j                  d|
|	t        j                  ¬«      }	t        j                  dd|	«      }	t        j                  dd|	«      }	t        j                  dd|	«      }	|	j                  «       }nd}|rt        |«      dk  rd|› d �}|||| d!œS # t
        $ r}dt        |«      icY d}~S d}~ww xY w)"u-   è®¿é—®è¯¦æƒ…é¡µæ��å�–æ ‡é¢˜ã€�æ—¥æœŸã€�æ­£æ–‡r   Né   ©ÚheadersÚtimeoutúutf-8ÚerrorÚ z%<div class="lfnews-title">(.*?)</div>z<[^>]+>r   z<title>([^<]+)</title>z&nbsp;.*z/(\d{8})/news_[\w_]+\.shtmlé   ú-é   é   z	 08:00:00zD<div class="lfnews-content">(.*?)</div>\s*<div class="lfnews-bottom"z+<div[^>]*style=\'display:none\'>[^<]*</div>z&<div[^>]*__ControlWrapper[^>]*>|</div>u   ^\s*é¡µé�¢å†…å®¹\s*c                 ó„   — | j                  d«      }| j                  d«      }|j                  d«      rd|z   }d|› d|› d�S )Nr   é   ú/r   z	<a href="z">z</a>)r   Ú
startswith)r   r   Útexts      r   Úmake_abs_linkz!get_detail.<locals>.make_abs_linkQ   sG   € Ø—7‘7˜1“:ˆDØ—7‘7˜1“:ˆDØ�‰˜sÔ#Ø0°4Ñ7�Ø˜t˜f B t f¨DÐ1Ð1r   z9<a[^>]*href="([^"]+\.(pdf|docx?|xlsx?))"[^>]*>([^<]+)</a>)Úflagsz style="[^"]*"z<span[^>]*>|</span>z&nbsp;ú é   z<p>z</p>)r   Úpub_dateÚcontentÚurl)ÚrequestsÚgetÚHEADERSÚencodingr$   Ú	ExceptionÚstrr	   ÚsearchÚDOTALLÚsubr   r   ÚIÚlen)r+   r,   Úrr   Úer   r   r)   ÚdÚcontent_htmlr%   r*   s               r   Ú
get_detailr;   )   s2  € ãð!Ø�L‰L˜¤g°rˆLÓ:ˆØˆŒ
Ø�v‰vˆð
 €EÜ
�	‰	Ð:¸DÄ"Ç)Á)ÓL€AÙÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆáÜ�I‰IÐ/°Ó6ˆÙÜ—F‘F˜;¨¨A¯G©G°A«JÓ7×=Ñ=Ó?ˆEð €HÜ
�	‰	Ð0°#Ó6€AÙØ�G‰G�A‹JˆØ˜˜�e�W˜A˜a  !˜f˜X Q q¨¨1 v h¨iÐ8ˆô 	�	‰	ÐYÐ[_Ôac×ajÑajÓk€AÙØ—w‘w˜q“zˆä—v‘vÐLÈbÐR^Ó_ˆÜ—v‘vÐGÈÈ\ÓZˆô —v‘vÐ4°b¸,ÓGˆò	2ô —v‘vÐZØ+¨\ÄÇÁôGˆô —v‘vÐ/°°\ÓBˆÜ—v‘vÐ4°b¸,ÓGˆÜ—v‘v˜i¨¨lÓ;ˆð ×$Ñ$Ó&‰àˆñ ”c˜'“l RÒ'Ø˜�w˜dÐ#ˆð ØØØñ	ð øôq ò !Øœ˜Q›Ð Õ ûð!ús   †+H7 È7	IÉ IÉIÉIc                 óÞ  — | syg }| D ]“  }|d   j                  dd«      }|d   j                  dd«      }|j                  dd«      xs dj                  dd«      }|j                  dd«      }|j                  d	t        › d
|› d
|› d
|› d
|› d
t        › d
|› d�«       Œ• ddj	                  |«      z   dz   }d}t        |d«      5 }	|	j                  |«       ddd«       t        j                  ddd|t        › d|› �gddd¬«      }|j                  dk7  r.t        d|j                  › �«       t        j                  |«       yt        j                  dddt        d|› d|› �gddd¬«      }|j                  dk(  rt        d«       nt        d|j                  dd › �«       t        j                  |«       t        j                  dddt        d gddd¬«       t        d!«       y# 1 sw Y   �ŒxY w)"u5   å�Œæ­¥åˆ°è¿œç¨‹æœ�åŠ¡å™¨: SCP SQL æ–‡ä»¶ + SSH æ‰§è¡ŒNr   ú'z''r+   r*   r   r)   zoINSERT OR IGNORE INTO gov_raw (site_name, page_url, title, content, publish_date, summary, date_rank) VALUES ('z','z');zBEGIN;zCOMMIT;z/tmp/sync_apw.sqlÚwÚscpz-ozConnectTimeout=10ú:Té<   )Úcapture_outputr$   r   r   u     SCPå¤±è´¥: Ússhzsqlite3 /root/search.db < z && rm éx   u
     å�Œæ­¥OKu     å�Œæ­¥å¤±è´¥: éÈ   z†sqlite3 /root/search.db "INSERT INTO gov_search(gov_raw) SELECT rowid FROM gov_raw WHERE rowid NOT IN (SELECT rowid FROM gov_search);"u     FTSæ›´æ–°å®Œæˆ�)Úreplacer-   r   Ú	SITE_NAMEÚjoinÚopenÚwriteÚ
subprocessÚrunÚ
SERVER_SSHÚ
returncodeÚprintÚstderrÚosÚunlink)
ÚrecordsÚ	sql_linesr7   r   r+   r*   ÚdateÚsqlÚtmpÚfs
             r   Úsync_to_serverrY   p   s  € áØà€IØò 
ˆØ�'‘
×"Ñ" 3¨Ó-ˆØ�‰h×Ñ˜s DÓ)ˆØ—5‘5˜ BÓ'Ò-¨2×6Ñ6°s¸DÓAˆØ�u‰u�Z Ó$ˆØ×ÑðÜ!�{ # c U¨#¨e¨W°C¸°yÀÀDÀ6ÈÌYÈKÐWZÐ[_ÐZ`Ð`cðeõ	
ð
ð �R—W‘W˜YÓ'Ñ
'¨)Ñ
3€CØ
€CÜ	ˆc�3‹ð ˜1Ø	�‰�Œ÷ô 	�‰˜˜tÐ%8¸#Ä*ÀÈQÈsÈeÐ?TÐUØ&*°¸rô	C€Aà‡|�|�qÒÜ�˜aŸh™h˜ZÐ(Ô)Ü
�	‰	�#ŒØä�‰˜˜tÐ%8¼*Ø4°S°E¸ÀÀÐFðHà&*°¸sô	D€Að 	‡|�|�qÒÜˆlÕäÐ  §¡¨$¨3 Ð 0Ð1Ô2ä‡I�Iˆc„Nä‡N�N�E˜4Ð!4´jð _ð`à"&¨T¸2õ?ô 
Ð
Õ÷/ñ ús   ÃG"Ç"G,c            
      óL  — t        dt        › �«       dd l} g }t        «       }t	        dd«      D �]�  }|dk(  r
t
        dz   }nd|› d�}t        d|› d	�d
d¬«       	 | j                  |t        d¬«      }d|_        |j                  }t        |«      }|st        d«        �n"|D �	cg c]  }	|	d   |vsŒ|	‘Œ }
}	|
rt        |
«      t        |«      dz  k  rt        t        |«      › d�«        nÖt        t        |
«      › d�«       |
D ]·  }|d   d d }t        d|› d�d
d¬«       t        |d   «      }|j                  |d   «       |j                  d«      rt        d|d   › �«       Œbt        |j                  dd
«      «      dk  rt        d«       ŒŒ|j                  |«       t        dt        |d   «      › d �«       Œ¹ �Œ“ |st        d!«       y t        d"t        |«      › d#�«       dd l}t#        j$                  t"        j&                  j)                  t*        «      d¬$«       |j-                  t*        «      }d}|D ]>  }	 |j/                  d%t        |d   |d&   |d   |d'   f«      }|j0                  dkD  r|dz  }Œ@ |j3                  «        |j/                  d(«      j5                  «       d   }|j7                  «        t        d)|› d*|› �«       t        d+«       t9        |«       t        d,«       y # t        $ r}t        d|› �«       Y d }~ �ŒOd }~ww xY wc c}	w #  Y ŒåxY w)-Nu	   
çˆ¬å�–: r   r   é
   r"   zdhttp://zrpc.sinopec.com/zrpc/social_responsibility/environmental_protection/simulta_environ/default_z.shtmlu     ç¬¬u   é¡µ: r   T)ÚendÚflushr   r   r   u   è¯·æ±‚å¤±è´¥: u   0 æ�¡r   g333333Ó?u    æ�¡ (å·²çˆ¬)u    æ�¡r   é2   u       è¯¦æƒ…: z... r   zFAIL: r*   r(   u   å†…å®¹è¿‡çŸ­ï¼Œè·³è¿‡zOK (u   å­—)u   æœªçˆ¬å�–åˆ°æœ‰æ•ˆæ•°æ�®u   
å…±èŽ·å�– u    æ�¡æœ‰æ•ˆè®°å½•)Úexist_okzkINSERT OR IGNORE INTO quality_results (site_name, title, url, content, publish_date) VALUES (?, ?, ?, ?, ?)r+   r)   z$SELECT COUNT(*) FROM quality_resultsu   å…¥åº“: æ–°å¢žu   , ç´¯è®¡u   å�Œæ­¥åˆ°æœ�åŠ¡å™¨...u   å®Œæˆ�)rO   rG   r,   ÚsetÚrangeÚBASE_URLr-   r.   r/   r$   r0   r   r6   r;   Úaddr   Úsqlite3rQ   ÚmakedirsÚpathÚdirnameÚDB_PATHÚconnectÚexecuteÚrowcountÚcommitÚfetchoneÚcloserY   )r,   Úall_detailsÚvisited_urlsÚpage_nr+   r7   r   r8   r   ÚiÚ	new_itemsÚitemÚtitle_shortÚdetailrd   ÚconnÚ	new_countÚcurÚtotals                      r   Úmainr{   œ   s0  € Ü	ˆJ”y�kÐ
"Ô#Ûà€KÜ“5€Lô ˜˜2“,ó .7ˆØ�QŠ;Ü˜S‘.‰Cð yÐyð  yAð  AGð  HˆCä��f�X˜UÐ#¨°4Õ8ð	Ø—‘˜S¬'¸2�Ó>ˆAØ ˆAŒJØ—6‘6ˆDô
 ˜tÓ$ˆÙÜ�'ŒNÚð !&ÖG˜1¨¨6©¸,Ò)F’QÐGˆ	ÐGÙœC 	›N¬S°«Z¸#Ñ-=Ò=Ü”S˜“Z�L Ð.Ô/Ùä”�Y“Ð  Ð%Ô&àò 	7ˆDØ˜w™-¨¨Ð,ˆKÜ�L  ¨TÐ2¸À$ÕGä  V¡Ó-ˆFØ×Ñ˜T &™\Ô*à�z‰z˜'Ô"Ü˜˜v g™Ð/Ð0Ô1Øä�6—:‘:˜i¨Ó,Ó-°Ò2ÜÐ-Ô.Øà×Ñ˜vÔ&Ü�Dœ˜V IÑ.Ó/Ð0°Ð5Õ6ò!	7ð=.7ñ` ÜÐ(Ô)Øä	ˆLœ˜[Ó)Ð*Ð*:Ð
;Ô<ó Ü‡K�K”—‘—‘¤Ó(°4Õ8Ø�?‰?œ7Ó#€Dà€IØò 	ˆð	Ø—,‘,Ø}Ü˜A˜g™J¨¨%©°!°I±,ÀÀ*ÁÐNóˆCð �|‰|˜aÒØ˜Q‘�	øð	ð 	‡K�K„MØ�L‰LÐ?Ó@×IÑIÓKÈAÑN€EØ‡J�J„LÜ	ˆN˜9˜+ X¨e¨WÐ
5Ô6ô 
Ð
!Ô"Ü�;Ôä	ˆ(…OøôG ò 	Ü�N 1 #Ð&Ô'Þûð	üò HøðZ	Ùús0   Á+K4Â%LÂ2LÉ;LË4	LË=LÌLÌL#Ú__main__)Ú__doc__ÚsysrQ   r	   rK   ÚtimerG   rb   ÚLIST_URLrf   rH   rg   ÚabspathÚ__file__rh   rM   r.   r   r;   rY   r{   Ú__name__© r   r   ú<module>r…      s™   ðñ÷ %× $Ó $ð 1€	Øh€Øi€Ø
�'‰'�,‰,�r—w‘w—‘ r§w¡w§¡°xÓ'@ÓAÐCWÓ
X€Ø €
ð ð  Dð€ò
ò$DòN)òXXðv ˆzÒÙ…Fð r   