Ë
    ¸¬uj)2  ã                   óJ  — 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ddddœdd	d
ddœdddddœdddddœdddddœdddddœdddddœdddddœdd d!d"dœd#d$d%d&dœd'd(d)d*dœd+d,d-d.dœd/d0d1d.dœd2œZd3d4iZ e j                  d5d6«      Zd7„ Z	d>d8„Z
d9„ Zd?d:„Zd;„ Zd<„ Zed=k(  r e«        yy)@é    Nu   å®‰åº†çŸ³åŒ–zapw.sinopec.comz/apw/csr/environmental_healthÚreverseé   )ÚnameÚdomainÚpathÚ
paginationÚfirst_page_itemsu   ç‡•å±±çŸ³åŒ–zbypc.sinopec.comz/bypc/csr/public_infor)r   r   r   r   u   é•‡æµ·çŸ³åŒ–zzrcc.sinopec.comz&/zrcc/csr/safe_envir/lft_zxjk/eia_siteÚnormalu   ä¸­ç§‘ç‚¼åŒ–-å…¬å�¸æ–°é—»zzrpc.sinopec.comz/zrpc/news/company_newsu"   ä¸­ç§‘ç‚¼åŒ–-é¡¹ç›®çŽ¯ä¿�ä¸‰å�Œæ—¶zD/zrpc/social_responsibility/environmental_protection/simulta_environu   çŸ³å®¶åº„ç‚¼åŒ–zsjlh.sinopec.comz/sjlh/csr/public_inforu   ä»ªå¾�åŒ–çº¤-çŽ¯å¢ƒä¿�æŠ¤zycfc.sinopec.comz/ycfc/csr/envir_proz	reverse:3u   ä¸­éŸ©çŸ³åŒ–-å…¬å�¸å…¬å‘Šzzhsh.sinopec.comz"/zhsh/information/company_announceu   å·�ç»´åŒ–å·¥-å…¬å�¸æ–°é—»zsvw.sinopec.comz/svw/news/com_newsz
reverse:16u   é½�é²�çŸ³åŒ–-å…¬å�¸å…¬å‘Šzqlsh.sinopec.comz/qlsh/news/com_noticez	reverse:5u   èŒ‚å��çŸ³åŒ–-å…¬å‘Šå…¬ç¤ºzmmsh.sinopec.comz/mmsh/news/gggsz	reverse:6u   æ´›é˜³çŸ³åŒ–-å®‰å…¨çŽ¯ä¿�zlysh.sinopec.comz/lysh/csr/safe_envirz	reverse:2u   æµŽå�—ç‚¼åŒ–-ä¿¡æ�¯å…¬å¼€zjnlh.sinopec.comz
/jnlh/xxgk)ÚapwÚbypcÚzrccÚzrpcÚzrpc_envÚsjlhÚycfcÚzhshÚsvwÚqlshÚmmshÚlyshÚjnlhz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36Ú	SEARCH_DBz/root/search.dbc                 ó(  — |d   }|d   }g }dt        j                  |«      › d�}t        j                  || «      D ]N  }d|› |› d|j                  d«      › �}|j                  d«      j	                  «       }|j                  ||d	œ«       ŒP |sƒd
t        j                  |«      › d�}	t        j                  |	| «      D ]Q  }d|› |› d|j                  d«      › �}|j                  d«      j	                  «       }|sŒ>|j                  ||d	œ«       ŒS |S )u"   ä»Žåˆ—è¡¨é¡µHTMLæ��å�–æ‰€æœ‰æ�¡ç›®r   r   z!<a[^>]*title="([^"]*)"[^>]*href="z/(\d+/news_[\w_]+\.shtml)"úhttp://ú/é   é   )ÚtitleÚhrefzhref="z+/(\d+/news_[\w_]+\.shtml)"[^>]*>([^<]+)</a>)ÚreÚescapeÚfinditerÚgroupÚstripÚappend)
ÚhtmlÚsite_cfgr   r   ÚitemsÚpat1Úmr   r   Úpat2s
             ú"/root/gov_crawler/crawl_sinopec.pyÚget_list_itemsr-   y   s  € à�hÑ€FØ�FÑ€DØ€Eð 0´·	±	¸$³Ð/@Ð@ZÐ[€DÜ�[‰[˜˜tÓ$ò 5ˆØ˜˜   a¨¯©°«
 |Ð4ˆØ—‘˜“
× Ñ Ó"ˆØ�‰˜u¨dÑ3Õ4ð5ñ ØœŸ™ 4›Ð)Ð)TÐUˆÜ—‘˜T 4Ó(ò 	=ˆAØ˜V˜H T F¨!¨A¯G©G°A«J¨<Ð8ˆDØ—G‘G˜A“J×$Ñ$Ó&ˆEÚØ—‘ u°dÑ;Õ<ð		=ð €Ló    c                 ód  ‡— 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                  «       }|s|}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   Šˆfd„}t        j                  d||t        j                  ¬«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }|j                  «       }nNt        j                  d|«      }|r4|j                  d
«      }|j                  d «      rd!|d   › �|z   }d"|› d#�}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*r   c                 óŒ   •— | j                  d«      }| j                  d«      }|j                  d«      rd‰› �|z   }d|› d|› d�S )Nr   é   r   r   z	<a href="z">z</a>)r#   Ú
startswith)r*   r   Útextr   s      €r,   Úmake_abs_linkz!get_detail.<locals>.make_abs_linkº   sO   ø€ Ø—7‘7˜1“:ˆDØ—7‘7˜1“:ˆDØ�‰˜sÔ#Ø   Ð)¨DÑ0�Ø˜t˜f B t f¨DÐ1Ð1r.   z9<a[^>]*href="([^"]+\.(pdf|docx?|xlsx?))"[^>]*>([^<]+)</a>)Úflagsz style="[^"]*"z<span[^>]*>|</span>z&nbsp;ú zurl=(/[^"]+\.(pdf|docx?|xlsx?))r   r   u   <p>é™„ä»¶æ–‡æ¡£ï¼š<a href="u   ">ç‚¹å‡»æŸ¥çœ‹/ä¸‹è½½</a></p>é   z<p>z</p>)r   Úpub_dateÚcontentÚurl)ÚrequestsÚgetÚHEADERSÚencodingr>   Ú	ExceptionÚstrr    ÚsearchÚDOTALLÚsubr#   r$   ÚIr=   Úlen)rE   r'   Údefault_titlerF   Úrr&   Úer   r*   rC   ÚdÚcontent_htmlr?   rD   Údoc_urlr   s                  @r,   Ú
get_detailrW   ’   s�  ø€ ãð!Ø�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Ó;ˆà×$Ñ$Ó&‰ô �I‰IÐ8¸$Ó?ˆÙØ—g‘g˜a“jˆGØ×!Ñ! #Ô&Ø# H¨XÑ$6Ð#7Ð8¸7ÑB�à3°G°9Ð<YÐZ‰GàˆGá”c˜'“l RÒ'Ø˜�w˜dÐ#ˆà¨¸WÈSÑQÐQøô ò !Øœ˜Q›Ð Õ ûð!ús   ‡+J Ê	J/ÊJ*Ê$J/Ê*J/c                 ó,  — | d   }| d   }d|› |› �}|dk(  r|dz   S | j                  d«      }|rV|j                  d«      rE|j                  d«      }t        |«      dkD  rt	        |d   «      nd	}|dz   |z
  }|dk  ry
|› d|› d�S |dk(  r|› d|dz
  › d�S y
)u(   æ ¹æ�®ç«™ç‚¹åˆ†é¡µé…�ç½®ç”Ÿæˆ�ç¬¬Né¡µURLr   r   r   r   r   r   r   ú:é   Nz	/default_z.shtmlr
   )rG   r=   ÚsplitrP   Úint)	r'   Úpage_nr   r   Úbaser   ÚpartsÚmax_pageÚpage_nums	            r,   Úget_page_urlrb   Û   sÍ   € à�hÑ€FØ�FÑ€DØ�V�H˜T˜FÐ#€Dà�‚{Ø�c‰zÐà—‘˜lÓ+€Já�j×+Ñ+¨IÔ6à× Ñ  Ó%ˆÜ$'¨£J°¢N”3�u˜Q‘x”=¸ˆØ˜a‘< &Ñ(ˆØ�aŠ<ØØ��y  
¨&Ð1Ð1Ø	�xÒ	à��y ¨¡ 
¨&Ð1Ð1ð r.   c                 óV  — ddl }t        |    }|d   }t        d|› �|rdndz   «       g }t        «       }|rdnd}t	        d|dz   «      D �]“  }t        ||«      }	|	s �n‚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   ||d   ¬«      }|j                  |d   «       |j                  d«      rt        d|d   › �«       Œht        |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#        d$«      j$                  j'                  «       j)                  d%«      }|j+                  t,        «      }d}|D ]@  }
	 |j/                  d&||
d'   |
d   |
d   |
d(   ||
d(   d)f«      }|j0                  dkD  r|dz  }ŒB |j3                  «        |j/                  d*|f«      j5                  «       d   }|j7                  «        t        d+|› d,|› �«       t        d-«       y# t        $ r}t        d|› �«       Y d}~ �Œ7d}~ww xY wc c}w #  Y ŒÓxY w).u!   çˆ¬å�–æŒ‡å®šç«™ç‚¹çš„æ‰€æœ‰æ•°æ�®r   Nr   u	   
çˆ¬å�–: u    [å¢žé‡�æ¨¡å¼�]r6   r   rB   u     ç¬¬u   é¡µ: T)ÚendÚflushr0   r1   r4   u   è¯·æ±‚å¤±è´¥: u   0 æ�¡r   g333333Ó?u    æ�¡ (å·²çˆ¬)u    æ�¡r   é2   u       è¯¦æƒ…: z... )rQ   r5   zFAIL: rD   u   å†…å®¹è¿‡çŸ­ï¼Œè·³è¿‡zOK (u   å­—)u   æœªçˆ¬å�–åˆ°æœ‰æ•ˆæ•°æ�®u   
å…±èŽ·å�– u    æ�¡æœ‰æ•ˆè®°å½•Údatetimez%Y-%m-%d %H:%M:%Sz�INSERT OR IGNORE INTO gov_raw (site_name, page_url, title, content, publish_date, summary, date_rank, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?)rE   rC   Úactivez.SELECT COUNT(*) FROM gov_raw WHERE site_name=?u   å…¥åº“: æ–°å¢žu   , ç´¯è®¡u   å®Œæˆ�)rF   ÚSITESÚprintÚsetÚrangerb   rG   rH   rI   r>   rJ   r-   rP   rW   Úaddr%   Úsqlite3Ú
__import__rg   ÚnowÚstrftimeÚconnectr   ÚexecuteÚrowcountÚcommitÚfetchoneÚclose)Úsite_keyÚincrementalrF   ÚcfgÚ	site_nameÚall_detailsÚvisited_urlsÚ	max_pagesr]   rE   rR   r&   rS   r(   ÚiÚ	new_itemsÚitemÚtitle_shortÚdetailrn   rp   ÚconnÚ	new_countÚcurÚtotals                            r,   Ú
crawl_siterˆ   ÷   sP  € ãä
�‰/€CØ�F‘€Iä	ˆJ�y�kÐ
"¹;Ñ&7ÈBÑ
OÔPà€KÜ“5€Lá ‘ b€IÜ˜˜9 q™=Ó)ó +7ˆÜ˜3 Ó'ˆÙÚä��f�X˜UÐ#¨°4Õ8ð	Ø—‘˜S¬'¸2�Ó>ˆAØ ˆAŒJØ—6‘6ˆDô
 ˜t SÓ)ˆÙÜ�'Œ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¡¨cÀÀgÁÔOˆFØ×Ñ˜T &™\Ô*à�z‰z˜'Ô"Ü˜˜v g™Ð/Ð0Ô1Øä�6—:‘:˜i¨Ó,Ó-°Ò2ÜÐ-Ô.Øà×Ñ˜vÔ&Ü�Dœ˜V IÑ.Ó/Ð0°Ð5Õ6ò!	7ð7+7ñZ ÜÐ(Ô)Øä	ˆLœ˜[Ó)Ð*Ð*:Ð
;Ô<ó Ü
�ZÓ
 ×
)Ñ
)×
-Ñ
-Ó
/×
8Ñ
8Ð9LÓ
M€CØ�?‰?œ9Ó%€Dà€IØò 	ˆð	Ø—,‘,ð `Ø˜A˜e™H a¨¡j°!°I±,ÀÀ*ÁÈyÐZ[Ð\fÑZgÐiqÐróˆCð �|‰|˜aÒØ˜Q‘�	øð	ð 	‡K�K„MØ�L‰LÐIÈIÈ<ÓX×aÑaÓcÐdeÑf€EØ‡J�J„LÜ	ˆN˜9˜+ X¨e¨WÐ
5Ô6ä	ˆ(…Oøô} ò 	Ü�N 1 #Ð&Ô'Þûð	üò HøðZ	Ùús0   Á1+K9Â<LÃ	LÉ=L$Ë9	LÌLÌLÌ$L(c            
      ó¼   — t        d«       t        t        j                  «       «      D ]1  \  } }|j	                  dd«      }t        d| d›d|d   d›d	|› d
�«       Œ3 y)u   åˆ—å‡ºæ‰€æœ‰å�¯ç”¨çš„ç«™ç‚¹u   å�¯ç”¨ç«™ç‚¹:r   u   å�•é¡µz  Ú12sz - r   Ú20sz (ú)N)rj   Úsortedri   r(   rG   )Úkeyrz   r   s      r,   Ú
list_sitesr�   P  s`   € ä	ˆ/ÔÜœ5Ÿ;™;›=Ó)ò A‰ˆˆSØ—W‘W˜\¨8Ó4ˆ
Ü��3�s�)˜3˜s 6™{¨3Ð/¨r°*°¸QÐ?Õ@ñAr.   c                  óê  — t        t        j                  «      dk  rBt        d«       t        d«       t        d«       t        d«       t        d«       t	        «        y dt        j                  v } t        j                  d   }|d	v r/t        t        j                  «       «      D ]  }t        || «       Œ y |d
k(  rt	        «        y |t        vrt        d|› �«       t	        «        y t        || «       y )Nr   uB   ç”¨æ³•: python3 crawl_sinopec.py <ç«™ç‚¹key|--all> [--incremental]u   ç¤ºä¾‹:u6     python3 crawl_sinopec.py apw          # å®‰åº†çŸ³åŒ–u6     python3 crawl_sinopec.py --all        # å…¨éƒ¨ç«™ç‚¹uR     python3 crawl_sinopec.py --incremental # å…¨éƒ¨ç«™ç‚¹ï¼Œä»…ç¬¬1é¡µ(æ¯�æ—¥å¢žé‡�)ú--incrementalr   )z--allr‘   Úlistu   æœªçŸ¥ç«™ç‚¹: )	rP   ÚsysÚargvrj   r�   r�   ri   Úkeysrˆ   )ry   rx   rŽ   s      r,   Úmainr–   X  sÊ   € Ü
Œ3�8‰8ƒ}�qÒÜÐRÔSÜˆiÔÜÐFÔGÜÐFÔGÜÐbÔcÜŒØà!¤S§X¡XÐ-€KÜ�x‰x˜‰{€HàÐ-Ñ-äœ%Ÿ*™*›,Ó'ò 	)ˆCÜ�s˜KÕ(ð	)àà�6ÒÜŒØà”uÑÜ�˜x˜jÐ)Ô*ÜŒØäˆx˜Õ%r.   Ú__main__)r6   )F)Úosr“   r    Ú
subprocessÚtimeri   rH   Úgetenvr   r-   rW   rb   rˆ   r�   r–   Ú__name__© r.   r,   ú<module>rž      s{  ðã 	ð÷0 %× $Ó $ð Ø#Ø/ØØñð Ø$Ø(Øñ	ð Ø$Ø8Øñ	ð ,Ø$Ø)Øñ	ð 5Ø$ØVØñ	ð "Ø$Ø(Øñ	ð ,Ø$Ø%Ø!ñ	ð ,Ø$Ø4Øñ	ð ,Ø#Ø$Ø"ñ	ð ,Ø$Ø'Ø!ñ	ð ,Ø$Ø!Ø!ñ	ð ,Ø$Ø&Ø!ñ	ð ,Ø$ØØ!ñ	ñWQ	€ðh ð  Dð€ð ˆB�I‰I�kÐ#4Ó5€	òó2FRòRó8VòrAò&ð> ˆzÒÙ…Fð r.   