Ë
    €Ûµ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lZd dlmZmZ  e j                  dd«      Z
 ej                  «        ed¬«      z
  j                  d«      Zdd	i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œgZd9d%„Zd&„ Zd'„ Zd(„ Zd)„ Zed*k(  rÙ eej.                  «      d+kD  r eej.                  d+   «      nd,Z eej.                  «      d-kD  r eej.                  d-   «      ndZg Z ee«      D ]9  \  ZZe�eek7  rŒ eee«      ZejA                  e«        ejB                  d+«       Œ;  e"d.d/› �«        e"d0«       eD ]"  Z e"d1ed2   › d3ed4   › d5ed6   › d7ed8   › �«       Œ$ yy):é    N)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/root/search.dbiG  )Údaysz%Y-%m-%dz
User-Agentú<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36u"   æ³°å’ŒåŽ¿äººæ°‘æ”¿åºœ-æ”¿åºœé‡‡è´­zwww.jxth.gov.cnÚ107854Ú9_xxgké2   )ÚnameÚdomainÚcatidÚ	ajax_typeÚnumu   æ°¸ä¸°åŽ¿-åŸºç¡€å»ºè®¾zwww.jxyongfeng.gov.cnÚ134486Ú5_xxgku   å�‰æ°´åŽ¿-æ±¡æŸ“é˜²æ²»zwww.jishui.gov.cnÚ165920Ú4_xxgké#   u   é�‚å·�åŽ¿-éƒ¨é—¨é¡¹ç›®zwww.suichuan.gov.cnÚ166018Ú8_xxgku   å³¡æ±ŸåŽ¿-ç”Ÿæ€�çŽ¯å¢ƒzwww.xiajiang.gov.cnÚ165729Ú7_xxgku   æ–°å¹²åŽ¿-åŸºç¡€å»ºè®¾zwww.xingan.gov.cnÚ116418Ú6_xxgkc                 ó†  — ddl }d|v r|j                  d«      d   nd}d| › d|› d�}d|› d	|› d	|› d
|› d�	}t        d«      D ]a  }		 dd|ddddd|ddg}
|j                  |
ddd¬«      }|j                  dk(  r-|j
                  r!t        j                  |j
                  «      c S Œc y#  t        j                  d«       Y Œ~xY w)uE   ç”¨curlè°ƒAPIï¼ˆé�¿å…�requestsåº“headerå·®å¼‚å¯¼è‡´ç»“æžœä¸�ä¸€è‡´ï¼‰r   NÚ_Ú9úhttp://z/api-ajax_list-ú.htmlzajax_type%5B%5D=z&ajax_type%5B%5D=z<&ajax_type%5B%5D=xxgk&ajax_type%5B%5D=Y-m-d&ajax_type%5B%5D=z›&ajax_type%5B%5D=20&ajax_type%5B%5D%5B%5D=is_top+DESC&ajax_type%5B%5D%5B%5D=displayorder+DESC&ajax_type%5B%5D%5B%5D=inputtime+DESC&ajax_type%5B%5D=&is_ds=1é   Úcurlz-sz-Ar   z-Hz X-Requested-With: XMLHttpRequestz--dataz
--max-timeÚ30Tr   )Úcapture_outputÚtextÚtimeouté   )
Ú
subprocessÚsplitÚrangeÚrunÚ
returncodeÚstdoutÚjsonÚloadsÚtimeÚsleep)r   Úpager   r   r   r'   Úsite_idÚurlÚdata_strÚretryÚcmdÚresults               ú /root/gov_crawler/crawl_ji_an.pyÚ	fetch_apir9      sù   € ãà),°	Ñ)9ˆi�o‰o˜cÓ" 1Ò%¸s€GØ�F�8˜?¨4¨&°Ð
6€CØ" 9 +Ð->¸u¸gÐEVÐW^ÐV_ð `:Ø:=¸ð ?QðR€Hô �q“ò ˆð	Ø˜4  dÐ,jØÐ;¸XÀxÐQ]Ð_cðeˆCà—^‘^ C¸À4ÐQS�^ÓTˆFØ× Ñ  AÒ%¨&¯-ª-Ü—z‘z &§-¡-Ó0Ò0øðð øð	Ü�J‰J�qŽMús   ÁAB'Â'C c                 óÞ   — t        d«      D ]C  }	 t        j                  | t        d¬«      }|j                  dk(  rd|_        |j                  c S ŒE y #  t        j                  d«       Y Œ`xY w)Nr&   é   )Úheadersr%   éÈ   úutf-8)	r)   ÚrequestsÚgetÚHÚstatus_codeÚencodingr$   r/   r0   )r3   r5   Úrs      r8   ÚfetchrE   *   s_   € Ü�q“ò ˆð	Ü—‘˜S¬!°RÔ8ˆAØ�}‰} Ò#°' Q¤ZÀ!Ç&Á&º=Ð#ðð
 øð 	”—
‘
˜1–ús   �=AÁA,c           	      ó¢  — g d¢}|D �]E  }| j                  |«      }|dk  rŒ| j                  dd|«      }|dk  rŒ4| |d  }d}t        t        |«      «      D ]ô  }|||dz    dk(  r!|dz   t        |«      k\  s
||dz      dv r|dz  }Œ/|||dz    dk(  sŒ;|dz  }|dk(  sŒF|j                  d	d|«      }|dkD  r||dz   | n|d
| }	t	        j
                  dd|	t        j                  t        j                  z  ¬«      }	t	        j
                  dd|	«      }	t	        j
                  dd|	«      }	|	j                  «       sŒâ|	j                  «       c c S  �ŒH y)N)z	id="zoom"zclass="xxgk_content"zclass="zwxxgk_box"zclass="zwxxgk_bd"zclass="nr_content"zclass="content"zclass="articlecon"zclass="info-content"zclass="fmy_content"zclass="cont"z*class="fullscreen-layout-padding__content"r   z<divé   z >
	é   é   z</div>ú>é   z<(script|style)[^>]*>.*?</\1>Ú )Úflagsz'\s*(style|class|align|lang|dir)="[^"]*"z\n\s*\n+ú
)	ÚfindÚrfindr)   ÚlenÚreÚsubÚDOTALLÚIÚstrip)
ÚhtmlÚpatternsÚpÚiÚdsÚsÚdÚjÚgtÚcs
             r8   Úextract_contentra   2   s]  € òN€Hð ó 3ˆØ�I‰I�a‹LˆØˆqŠ5�(Ø�Z‰Z˜  1Ó%ˆØ�Š6�8Ø��ˆIˆ˜1�qÜ”s˜1“v“ò 
	3ˆAØ��1�Q‘3ˆx˜6Ò! q¨¡s¬c°!«f¢}¸¸!¸A¹#¹À*Ñ8LÈqÐTUÉvÉqØ�1�Q�q‘S�˜XÓ%Ø�Q‘�Ø˜“6ØŸ™  Q¨Ó*�BØ%'¨!¢V˜˜"˜Q™$˜q™	°°1°Q°�AÜŸ™Ð?ÀÀQÌbÏiÉiÔXZ×X\ÑX\ÉnÔ]�AÜŸ™ÐIÈ2ÈqÓQ�AÜŸ™˜{¨D°!Ó4�AØ—w‘w•y¨¯©«Ô"2ò
	3ð3ð" ó    c                 ób  — t        j                  d| «      xs d dgd   }|sBt        j                  ddt        j                  d| «      xs d dgd   «      j                  «       }t        j                  d| «      xs d dgd   }|st        j                  d| «      xs dgd   }||t        | «      fS )	Nz3<meta[^>]*name="ArticleTitle"[^>]*content="([^"]*)"rL   rH   z_[^_]+$z<title>(.*?)<z9<meta[^>]*name="PubDate"[^>]*content="(\d{4}-\d{2}-\d{2})z(\d{4}-\d{2}-\d{2})r   )rR   ÚsearchrS   rV   Úfindallra   )rW   ÚtÚpds      r8   Úextractrh   J   s³   € Ü	�‰ÐIÈ4Ó	PÒ	^ÐUYÐ[]ÐT^Ð`aÑb€AÙÜ�F‰F�:˜r¤B§I¡IÐ.>ÀÓ$EÒ$RÈ$ÈrÈÐTUÑ#VÓW×]Ñ]Ó_ˆÜ
�)‰)ÐPÐRVÓ
WÒ
eÐ\`ÐbdÐ[eÐghÑ	i€BÙ”R—Z‘ZÐ 6¸Ó=ÒEÀ"ÀÀqÑIˆrØˆb”/ $Ó'Ð'Ð'rb   c                 óª	  — | d   }| d   }| d   }| d   }| j                  dd«      }t        dd› d|› d	|› d
|› d�	«       t        d› «       t        j                  «       }|j                  j                  t        «       d|› �}	 |j                  |d¬«       t        j                  t        d¬«      }	|	j                  d«       |	j                  «        g }
t        d|dz   «      D ]è  }t        |||||«      }|r|j                  d«      st        d|› d�«        nµ|d   }t        d|› dt        |«      › d|j                  dd«      › d�«       |D ]V  }|
j                  d|› d|d   › d�|d   |j                  dd «      |j                  d!d «      |j                  d"d «      d#œ«       ŒX t        |«      d$k  r nt!        j"                  d%«       Œê t        d&t        |
«      › d'�«       d(x}x}}t%        |
«      D �]Á  \  }}d }t        d)«      D ]t  }	 |j                  |d*   d+¬«      }|j&                  d,k(  rd-|_        |j*                  } n9|j&                  d.k(  r(|j                  |d¬«       t!        j"                  d/«       Œv |st        d0|d   d d1 › d2�«       |dz  }Œ¨d3t-        |«      d d4 v r*d5t-        |«      d d4 v rt        d6|d   d d1 › �«       |dz  }Œâd7t-        |«      d d8 v rt        d9|d   d d1 › �«       |dz  }�Œt/        |«      \  }}}|xs |d   }|xs |d:   }|s|dz  }|j                  d;d «      }	 |	j                  d<||d*   |d*   ||||d(d=f	«       |	j0                  r|dz  }t        d>|d d1 › d?|› d�«       n|dz  }|dAz  d(k(  r|	j                  «        t!        j"                  d%«       �ŒÄ |	j                  «        |	j                  dB|t4        f«      j6                  }|rt        dC|› d'�«       |	j                  «        	 |	j                  dD|f«       |	j                  «        |	j9                  «        t        d|› dF|› dG|› dH|› �«       ||||dIœS #  Y �ŒÐxY w#  t!        j"                  d/«       Y �ŒxxY w# t2        $ r}t        d@|› �«       |dz  }Y d }~�Œd }~ww xY w# t2        $ r}t        dE|› �«       Y d }~Œ™d }~ww xY w)JNr   r   r   r   r   r
   rN   ú2==================================================z (catid=z, ú)r   é   )r%   é<   zPRAGMA busy_timeout=60000rH   Údatau     -> ç¬¬u   é¡µæ— æ•°æ�®u   ç¬¬u   é¡µ: u	    æ�¡ (å…±Útotalú?u   æ�¡)z/xxgk-show-Úidr   ÚtitleÚ	inputtimerL   ÚdescriptionÚserial)r3   rr   ÚdateÚsummaryru   é   g333333Ó?u   
å…± u    æ�¡r   r    r3   r;   r=   r>   i“  r&   z  ? é(   z...Ú404iô  z	Not Foundz	  - 404: u   çŽ¯å¢ƒå¼‚å¸¸iè  z	  - WAF: rv   rw   zœINSERT OR IGNORE INTO gov_raw(site_name,source_url,page_url,title,publish_date,content,summary,date_rank,category)
                VALUES(?,?,?,?,?,?,?,?,?)u   æ”¿åºœå…¬å‘Šz  +z (z  ? DB: é
   z:DELETE FROM gov_raw WHERE site_name=? AND publish_date < ?u     æ¸…ç�†è¶…3å¹´: zyINSERT INTO gov_search(rowid,title,site_name,summary) SELECT rowid,title,site_name,summary FROM gov_raw WHERE site_name=?z? FTS: õ   : æ–°å¢žõ   , ç©ºæ­£æ–‡õ   , è·³è¿‡)r   ÚnewÚno_bodyÚskip)r@   Úprintr?   ÚSessionr<   ÚupdaterA   Úsqlite3Úconnectr   ÚexecuteÚcommitr)   r9   rQ   Úappendr/   r0   Ú	enumeraterB   rC   r$   Ústrrh   Útotal_changesÚ	ExceptionÚCUTOFFÚrowcountÚclose)ÚsiteÚ	max_pagesr   r   r   r   r   ÚsessÚbase_urlÚconnÚitemsÚpgr]   rn   Úitemr   r�   r€   rZ   rW   r5   rD   rf   rg   Úcontentrr   rv   ÚeÚdeleteds                                r8   Ú	crawl_onerœ   R   s  € Ø�‰<€DØ�(‰^€FØ�‰M€EØ�[Ñ!€IØ
�(‰(�5˜"Ó
€CÜ	ˆBˆvˆh�b˜˜˜h u g¨R°¨x°qÐ
9Ô:Ü	ˆVˆHÔô ×ÑÓ€DØ‡L�L×ÑœÔØ˜˜Ð!€HðØ�‰� 2ˆÔ&ô �?‰?œ9¨bÔ1€Dà‡L�LÐ,Ô-à‡K�K„Mà€EÜ�A�y ‘{Ó#ò ˆÜ�f˜b %¨°CÓ8ˆÙ˜Ÿ™˜fœÜ�H˜R˜D Ð-Ô.±Ø�‰yˆÜ��B�4�uœS ›Y˜K y°·±°w¸sÓ1CÐ0DÀDÐIÔJØò 	ˆDØ�L‰LØ   ¨°D¸±J°<¸uÐEØ˜g™ØŸ™ ¨bÓ1ØŸ8™8 M°2Ó6ØŸ(™( 8¨RÓ0ñõ ð	ô ˆt‹9�rŠ>ÙÜ�
‰
�3�ð!ô$ 
ˆF”3�u“:�,˜dÐ
#Ô$ØÐ€CÐˆ$�Ü˜UÓ#ó "‰ˆˆ4ØˆÜ˜1“Xò 	ˆEð
Ø—H‘H˜T %™[°"�HÓ5�Ø—=‘= CÒ'Ø!(�A”JØŸ6™6�DÙØ—]‘] cÒ)Ø—H‘H˜X¨r�HÔ2Ü—J‘J˜q”Møð	ñ ”U˜T $ w¡-°°Ð"4Ð!5°SÐ9Ô:¸DÀ!¹G¸DÀXØ”C˜“I˜d˜s�OÑ#¨´s¸4³yÀÀ#°Ñ(FÜ�I˜d 7™m¨C¨RÐ0Ð1Ð2Ô3°T¸1±W°T¸hØœS ›Y u¨Ð-Ñ-Ü�I˜d 7™m¨C¨RÐ0Ð1Ð2Ô3°T¸1±W°T¹hÜ  ›‰ˆˆ2ˆwØÒ"�T˜'‘]ˆØÒ!�T˜&‘\ˆÙØ�q‰LˆGØ—h‘h˜y¨"Ó-ˆGð	>Ø�L‰Lð -à�t˜E‘{ D¨¡K°¸¸gÀuÈaÐQ_Ð`ôbð ×!Ò! 3¨¡6 3¬5°3°u¸S¸b°z°lÀ"ÀTÀFÈ!Ð1LÕ+MØ˜‘'�$àˆR‰4�Š7�D—K‘K”MÜ�
‰
�3ŽðE"ðF 	‡K�K„Mð �l‰lÐWÐZ^Ô`fÐYgÓh×qÑq€GÙÜÐ! ' ¨$Ð/Ô0Ø‡K�K„Mð0à�‰ð  Qð  SWð  RYô  	ZØ�‰Œà‡J�J„LÜ	ˆBˆtˆf�H˜S˜E ¨W¨I°X¸d¸VÐ
DÔEØ °À$ÑGÐGøðcÚûðRÜ—
‘
˜1—ûô& Ò=œu x°¨s ^Ô4°d¸A±g¶dûÐ=ûô  Ò/œ5 7¨1¨# ×/Ñ/ûÐ/úsO   ÂQ" È8Q*É
7Q*Í ARÐ#R1 Ñ"Q'Ñ*RÒ	R.ÒR)Ò)R.Ò1	SÒ:SÓSÚ__main__rH   r{   r&   z

rj   u   å…¨éƒ¨å®Œæˆ�z  r   r|   r   r}   r€   r~   r�   )r
   )#Úosr?   rR   r…   r/   r-   Úsysr   r   Úgetenvr   ÚnowÚstrftimerŽ   rA   ÚSITESr9   rE   ra   rh   rœ   Ú__name__rQ   ÚargvÚintÚmpÚsite_idxÚresultsrŠ   rZ   r\   rD   r‰   r0   r‚   © rb   r8   ú<module>r«      sñ  ðã 	Ø Oß -× -× -ß (àˆB�I‰I�kÐ#4Ó5€	Ø
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€ØÐQÐR€ð 2Ð=NÐYaÐpxð  BDñ  EØ%Ð1HÐS[ÐjrÐ{}Ñ~Ø%Ð1DÈxÐfnÐwyÑzØ%Ð1FÐQYÐhpÐy{Ñ|Ø%Ð1FÐQYÐhpÐy{Ñ|Ø%Ð1DÈxÐfnÐwyÑzð	€óò*òò0(òbHðH ˆZÒÙ  §¡›]¨QÒ.‰ˆS�X‰X�a‰[Ô	°B€BÙ#& s§x¡x£=°1Ò#4‰s�3—8‘8˜A‘;Ô¸$€HØ€GÙ˜%Ó ò ‰ˆˆ1ØÐ A¨¢MØÙ�a˜ÓˆØ�‰�qÔØˆ�
‰
�1�ðñ 
ˆD��ˆ/ÔÙ	ˆ.ÔØò ^ˆÙ��1�V‘9�+˜X a¨¡h Z¨{¸1¸Y¹<¸.ÈÐQRÐSYÑQZÐP[Ð\Õ]ñ^ð rb   