Ë
    ¸¬ujs'  ã                   óð   — 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mZ ddl	Z	 ej                  dd«      ZdZdZdZd	Zd
Zdedz   ddœZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	 dd„Zdd„Zd„ Zedk(  r e«        yy)u:  
æ°¸æ–°åŽ¿äººæ°‘æ”¿åºœ - å…¬å‘Šå…¬ç¤ºçˆ¬è™«
CMS: Dayrui/FineCMS (ZCMS)
åˆ—è¡¨: POST api-ajax_list-{page}.html (ajax_type[]=jQueryåº�åˆ—åŒ–)
è¯¦æƒ…: news-show-{id}.html
WAF: CloudWAF (Refererç»•è¿‡)

æ®µè�½ç»“æž„: div.conTxt > p > span (æ¯�æ®µç‹¬ç«‹pæ ‡ç­¾)
é™„ä»¶: æ­£æ–‡ä¸­çš„aé“¾æŽ¥æŒ‡å�‘.pdf/.doc/.xlsç­‰æ–‡ä»¶
é    N)ÚBeautifulSoupÚ	SEARCH_DBz/mnt/data/search.dbzhttp://www.yongxin.gov.cné   u"   æ°¸æ–°åŽ¿äººæ°‘æ”¿åºœ-å…¬å‘Šå…¬ç¤ºu   æ”¿åºœå…¬å‘Šu   æ±Ÿè¥¿z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z/news-list-gonggaogongshi.htmlzzh-CN,zh;q=0.9)z
User-AgentÚRefererzAccept-Languagec                 óœ  — |xs t        j                  «       }t        |«      D ]K  }	 |r|j                  | |t        d¬«      }n|j                  | t        d¬«      }d|_        |j                  c S  y
# t        $ rO}||dz
  k  rt        j                  d«       n't        d| › d|› �t        j                  ¬	«       Y d
}~ y
Y d
}~Œ¢d
}~ww xY w)u<   é€šç”¨è¯·æ±‚å‡½æ•°ï¼Œæ”¯æŒ�GETå’ŒPOSTï¼Œè‡ªåŠ¨å¤„ç�†CloudWAFé   )ÚdataÚheadersÚtimeout)r
   r   zutf-8é   é   z
  [ERROR] z: ©ÚfileN)ÚrequestsÚSessionÚrangeÚpostÚHEADERSÚgetÚencodingÚtextÚ	ExceptionÚtimeÚsleepÚprintÚsysÚstderr)ÚurlÚretriesÚ	post_dataÚsessionÚsÚiÚrÚes           ú'/root/gov_crawler/crawl_yongxin_gggs.pyÚfetchr'       sµ   € àÒ%”8×#Ñ#Ó%€AÜ�7‹^ò ˆð	ÙØ—F‘F˜3 Y¼È�FÓL‘à—E‘E˜#¤w¸�EÓ;�Ø ˆAŒJØ—6‘6ŠMñøô ò 	Ø�7˜Q‘;ŠÜ—
‘
˜1•ä˜
 3 % r¨!¨Ð-´C·J±JÕ?Ýô ûð	ús   ¨AA3Á3	CÁ<?CÃCc                 ó   — g d¢}|S )u)   æž„å»ºjQueryåº�åˆ—åŒ–çš„ajax_type[]å�‚æ•°))úajax_type[]Ú11_news)r)   Ú21)r)   Ú11)r)   Únews)r)   zY-m-d)r)   Ú40)r)   Ú30)r)   zis_top DESC)r)   zdisplayorder DESC)r)   zinputtime DESC)r)   Ú )Úis_dsÚ1© )ÚpageÚparamss     r&   Úbuild_ajax_paramsr6   3   s   € ò€Fð €Mó    c                 óî   — 	 t        j                  | «      }|j                  dg «      }|j                  dd«      }||fS # t        $ r,}t	        d|› �t
        j                  ¬«       g dfcY d}~S d}~ww xY w)u/   è§£æž�åˆ—è¡¨é¡µJSONï¼Œè¿”å›ž(itemåˆ—è¡¨, total)r	   Útotalr   u     è§£æž�åˆ—è¡¨JSONå¤±è´¥: r   N)ÚjsonÚloadsr   r   r   r   r   )Úhtmlr	   Úitemsr9   r%   s        r&   Ú
parse_listr>   G   sn   € ðÜ�z‰z˜$ÓˆØ—‘˜ Ó$ˆØ—‘˜ !Ó$ˆØ�eˆ|ÐøÜò ÜÐ*¨1¨#Ð.´S·Z±ZÕ@Ø�1ˆu�ûðús   ‚<? ¿	A4Á!A/Á)A4Á/A4c           	      óª  — t        | |¬«      }|syt        |d«      }i }|j                  d«      }|r'|j                  d«      r|d   j	                  «       |d<   |j                  d«      s(|j                  d«      }|r|j                  d¬	«      |d<   |j                  d
«      }|r*|j                  d«      r|d   j	                  «       dd |d<   |j                  d«      }|r'|j                  d«      r|d   j	                  «       |d<   |j                  d«      }	g }
d}g }|	�r{|	j                  D �]D  }|j                  dk(  �r|j                  d«      rŒ&|j                  d«      D ]£  }|j                  dd«      }|sŒt        j                  d|t        j                  «      sŒ>|j                  d¬	«      xs d}|j                  d«      r
t        |z   }n|j                  d«      st        dz   |z   }|j                  d|› d|› d�«       Œ¥ |j                  d¬	«      }|sŒò|j!                  d«      rd}|
j                  |«       �Œ|j                  dk(  s�Œ)d}|
j                  t#        |«      «       �ŒG |
s%|	j                  d¬	«      }|r|
j                  |«       |
rdj%                  |
«      nd|d<   ||d<   |rdj%                  |«      nd|d <   |S )!u   èŽ·å�–è¯¦æƒ…é¡µå¹¶è§£æž�©r!   Nzhtml.parserzmeta[name="ArticleTitle"]ÚcontentÚtitlezdiv.intr_titleT)Ústripzmeta[name="PubDate"]é
   Úpublish_datezmeta[name="ContentSource"]Úsourcez
div.conTxtFÚpÚtableÚaÚhrefr0   z"\.(pdf|doc|docx|xls|xlsx|zip|rar)$u   é™„ä»¶ú/Úhttpú[z](ú)z

Ú	has_tablez; Úattachments)r'   r   Ú
select_oner   rC   Úget_textÚchildrenÚnameÚfind_parentÚfind_allÚreÚsearchÚIÚ
startswithÚBASE_URLÚappendÚfindÚstrÚjoin)r   r!   r<   ÚsoupÚresultÚ
meta_titleÚintrÚmeta_pubÚmeta_srcÚcontent_divÚ
paragraphsrO   rP   ÚchildÚlinkrJ   Úattach_textr   s                     r&   Úfetch_detailrk   S   s¹  € ä�˜gÔ&€DÙØä˜˜}Ó-€DØ€Fð —‘Ð!<Ó=€JÙ�j—n‘n YÔ/Ø$ YÑ/×5Ñ5Ó7ˆˆw‰Ø�:‰:�gÔØ�‰Ð/Ó0ˆÙØ"Ÿm™m°$˜mÓ7ˆF�7‰Oð �‰Ð5Ó6€HÙ�H—L‘L Ô+Ø!)¨)Ñ!4×!:Ñ!:Ó!<¸S¸bÐ!Aˆˆ~Ñð �‰Ð;Ó<€HÙ�H—L‘L Ô+Ø# IÑ.×4Ñ4Ó6ˆˆxÑð —/‘/ ,Ó/€KØ€JØ€IØ€KâØ ×)Ñ)ó 	.ˆEØ�z‰z˜SÓ Ø×$Ñ$ WÔ-Øà!ŸN™N¨3Ó/ò G�DØŸ8™8 F¨BÓ/�DÚ¤§	¡	Ð*OÐQUÔWY×W[ÑW[Õ \Ø&*§m¡m¸$ mÓ&?Ò&KÀ8˜ØŸ?™?¨3Ô/Ü#+¨d¡?™DØ!%§¡°Ô!8Ü#+¨c¡>°DÑ#8˜DØ#×*Ñ*¨Q¨{¨m¸2¸d¸VÀ1Ð+EÕFðGð —~‘~¨D�~Ó1�ÚØ—z‘z 'Ô*Ø$(˜	Ø×%Ñ% dÖ+à—‘˜wÔ&Ø �	Ø×!Ñ!¤# e£*Ö-ð/	.ñ2 Ø×'Ñ'¨dÐ'Ó3ˆDÙØ×!Ñ! $Ô'á3=˜Ÿ™ JÔ/À2€Fˆ9ÑØ#€Fˆ;ÑÙ6A˜DŸI™I kÔ2Àr€Fˆ=ÑØ€Mr7   c                 ó&   — | j                  dd«      S )u   SQLiteè½¬ä¹‰å�•å¼•å�·ú'z'')Úreplace)r"   s    r&   Úescro   š   s   € à�9‰9�S˜$ÓÐr7   c                 óà   — t        j                  dt        g| ddd¬«      }|j                  dk7  r&t	        d|j
                  j                  «       › �«      ‚|j                  j                  «       S )u<   é€šè¿‡stdinç®¡é�“æ‰§è¡ŒSQLï¼ˆé�¿å…�Argument list too longï¼‰Úsqlite3TrD   )ÚinputÚcapture_outputr   r   r   zSQLite error: )Ú
subprocessÚrunÚDB_PATHÚ
returncodeÚRuntimeErrorr   rC   Ústdout)ÚsqlÚprocs     r&   Úrun_sqlr|   Ÿ   sb   € ä�>‰>Ø	”GÐØ $¨T¸2ô€Dð ‡�˜!ÒÜ˜^¨D¯K©K×,=Ñ,=Ó,?Ð+@ÐAÓBÐBØ�;‰;×ÑÓÐr7   c
                 ó"  — dt        | «      › d�}
t        |
«      }|ry|r(t        j                  dd|dd «      j	                  «       nd}d	t        | «      › d
t        |«      › d
t        |«      › d
t        |«      › d
t        |«      › d
t        |«      › d
t        |«      › d
t        | «      › d
t        |«      › d
t        |«      › dt        |	«      › d�}	 t        |«       dt        |«      › dt        |«      › dt        |«      › dt        | «      › dt        |«      › d�}	 t        |«       y# t        $ r(}t        d|› �t        j                  ¬«       Y d}~yd}~ww xY w# t        $ r(}t        d|› �t        j                  ¬«       Y d}~yd}~ww xY w)u<   æ�’å…¥åˆ°search.dbï¼ˆstdinç®¡é�“é˜²Argument list too longï¼‰z,SELECT rowid FROM gov_raw WHERE page_url = 'z';
Fz\s+ú NéÈ   r0   z´INSERT INTO gov_raw 
        (page_url, title, content, publish_date, site_name, 
         group_name, industry, source_url, summary, attachments, has_table)
    VALUES (
        'z',
        'z',
        z
    );
u     å…¥åº“å¤±è´¥: r   zIINSERT INTO gov_search (rowid, title, site_name, summary)
SELECT rowid, 'z', 'z!'
FROM gov_raw WHERE page_url = 'z@'
AND rowid NOT IN (SELECT rowid FROM gov_search WHERE title = 'z');
u     FTSå�Œæ­¥å¤±è´¥: T)
ro   r|   rW   ÚsubrC   Úintrx   r   r   r   )Úpage_urlrB   rA   rE   Ú	site_nameÚ
group_nameÚindustryrF   rP   rO   Ú	check_sqlra   Úsummaryrz   r%   Úsync_sqls                   r&   Ú
save_to_dbr‰   ª   sÀ  € ð ?¼sÀ8»}¸oÈTÐR€IÜ�YÓ€FÙØñ =DŒb�f‰f�V˜S '¨$¨3 -Ó0×6Ñ6Ô8È€Gð
ô ˆh‹-ˆð 
Ü
ˆe‹*ˆð 
Ü
ˆg‹,ˆð 
Ü
ˆlÓ
Ð	ð 
Ü
ˆi‹.Ð	ð 
Ü
ˆj‹/Ð	ð 
Ü
ˆh‹-ˆð 
Ü
ˆh‹-ˆð 
Ü
ˆg‹,ˆð 
Ü
ˆkÓ
Ð	ð 	Ü	ˆY‹Ðð ð€Cð"Ü�ŒðÜ�E“
ˆ|˜4¤ I£Ð/¨t´C¸³L°>ð B Ü # H£˜ð /?Ü?BÀ5»z¸lð Kð€Hð
:Ü�Ôð øô ò ÜÐ   Ð$¬3¯:©:Õ6Üûðûô ò :ÜÐ# A 3Ð'¬c¯j©j×9Ñ9Øûð:ús0   ÃD) ÄE Ä)	EÄ2EÅEÅ	FÅ&F	Æ	Fc                 ón  — t        j                  «       }|j                  j                  t        «       t        t        › d�|¬«       t        j                  d«       d}d}d}|| k  �r4t        d|› d�«       t        |«      }t        › d|› d	�}t        |||¬
«      }|s|dz  }ŒBt        |«      \  }}	|st        d|› d�«       �n×t        dt        |«      › d|	› d�«       t        |«      D �]¡  \  }
}|j                  d«      xs dj                  «       }|j                  d«      xs dj                  «       }|j                  d«      xs ddd }|j                  d«      xs dj                  «       }|r|s|dz  }Œ’t        d|
dz   › d|dd › d�dd¬«       t!        ||«      }|rÂ|j                  d«      xs |}|j                  d«      xs |}|j                  d«      xs |}|j                  dd«      }|j                  d d!«      }|j                  d"d«      }t#        ||||t$        t&        t(        |||rdnd¬#«
      }|r|dz  }t        |rd$nd%«       n!|dz  }t        d&«       n|dz  }t        d'«       t        j                  d(«       �Œ¤ |dz  }|| k  r�Œ4t        d)|dz
  › d*|› d+|› d,�«       |S )-u   ä¸»çˆ¬è™«é€»è¾‘rK   r@   g      à?r   r   u   --- ç¬¬u   é¡µ ---z/api-ajax_list-z.html)r    r!   u     ç¬¬u   é¡µæ— æ•°æ�®ï¼Œå�œæ­¢u     èŽ·å�–u   æ�¡ (å…±u   æ�¡)rB   r0   r   Ú	inputtimeNrD   Úlaiyuanz  [z] é2   z...T)ÚendÚflushrE   rF   rA   rO   FrP   )
r‚   rB   rA   rE   rƒ   r„   r…   rF   rP   rO   u    âœ“ (å�«è¡¨æ ¼)u    âœ“u
    å·²å­˜åœ¨u    è¯¦æƒ…èŽ·å�–å¤±è´¥g333333Ó?u   
âœ… çˆ¬å�–å®Œæˆ�: å…±çˆ¬å�–u   é¡µ, æ–°å¢žu   æ�¡, è·³è¿‡õ   æ�¡)r   r   r
   Úupdater   r'   r[   r   r   r   r6   r>   ÚlenÚ	enumerater   rC   rk   r‰   Ú	SITE_NAMEÚGROUPÚINDUSTRY)Ú	max_pagesr!   Útotal_insertedÚtotal_skippedr4   r5   Úlist_urlr<   r=   r9   r#   ÚitemrB   r   Ú	list_daterF   ÚdetailÚfinal_titleÚ
final_dateÚfinal_sourcerA   rO   rP   ra   s                           r&   Úcrawlr¡   Ú   sÖ  € ä×ÑÓ €GØ‡O�O×Ñœ7Ô#ô 
ŒXˆJ�aˆ. 'Õ*Ü‡J�Jˆs„Oà€NØ€MØ€Dà
�)Ó
Ü�˜�v˜WÐ%Ô&ä" 4Ó(ˆÜ�Z˜¨t¨f°EÐ:ˆÜ�X¨¸ÔAˆáØ�A‰IˆDØä! $Ó'‰ˆˆuÙÜ�E˜$˜Ð4Ð5Ô6Ùä�œ˜U›˜ H¨U¨G°4Ð8Ô9ä  Ó'ó .	‰GˆAˆtØ—X‘X˜gÓ&Ò,¨"×3Ñ3Ó5ˆEØ—8‘8˜E“?Ò( b×/Ñ/Ó1ˆCØŸ™ +Ó.Ò4°"°c°rÐ:ˆIØ—h‘h˜yÓ)Ò/¨R×6Ñ6Ó8ˆFá¡Ø Ñ"�Øä�C˜˜!™�u˜B˜u S b˜z˜l¨#Ð.°B¸dÕCô " # wÓ/ˆFáØ$Ÿj™j¨Ó1Ò:°U�Ø#ŸZ™Z¨Ó7ÒD¸9�
Ø%Ÿz™z¨(Ó3Ò=°v�Ø Ÿ*™* Y°Ó3�Ø"ŸJ™J {°EÓ:�	Ø$Ÿj™j¨¸Ó;�ä#Ø Ø%Ø#Ø!+Ü'Ü$Ü%Ø'Ø +Ù#,™a°!ô�ñ Ø" aÑ'�NÜ±Ñ,ÀÕGà! QÑ&�MÜ˜JÕ(à Ñ"�ÜÐ+Ô-ä�J‰J�sŽOð].	ð` 	�‰	ˆðE �)Ô
ôH 
Ð)¨$¨q©&¨°¸^Ð<LÈKÐXeÐWfÐfiÐ
jÔkØÐr7   c                  óŠ  — dd l } | j                  d¬«      }|j                  dt        dd¬«       |j	                  «       }t        d|j                  › d	�«       t        d
t        › dt        › �«       t        j                  «       }t        |j                  ¬«      }t        dt        j                  «       |z
  d›d|› d�«       y )Nr   u(   æ°¸æ–°åŽ¿äººæ°‘æ”¿åºœ-å…¬å‘Šå…¬ç¤ºçˆ¬è™«)Údescriptionz--pagesé   u   çˆ¬å�–é¡µæ•°(é»˜è®¤5))ÚtypeÚdefaultÚhelpu*   æ°¸æ–°åŽ¿æ”¿åºœ-å…¬å‘Šå…¬ç¤ºçˆ¬è™« (pages=rN   u   åˆ†ç»„: u
   , è¡Œä¸š: )r—   u   è€—æ—¶: z.1fu   s, æ–°å¢ž: r�   )ÚargparseÚArgumentParserÚadd_argumentr�   Ú
parse_argsr   Úpagesr•   r–   r   r¡   )r¨   ÚparserÚargsÚt0Úcnts        r&   Úmainr±   /  s§   € ÛØ×$Ñ$Ð1[Ð$Ó\€FØ
×Ñ˜	¬°QÐ=TÐÔUØ×ÑÓ€Dä	Ð6°t·z±z°lÀ!Ð
DÔEÜ	ˆH”U�G˜:¤h ZÐ
0Ô1Ü	�‰‹€BÜ
˜$Ÿ*™*Ô
%€CÜ	ˆH”T—Y‘Y“[ ‘^ CÐ(¨°C°5¸Ð
<Õ=r7   Ú__main__)é   NN)r0   r0   r   )r¤   )Ú__doc__ÚosrW   r   r   r:   rt   Úbs4r   r   Úgetenvrv   r[   Ú	MAX_PAGESr”   r–   r•   r   r'   r6   r>   rk   ro   r|   r‰   r¡   r±   Ú__name__r3   r7   r&   ú<module>rº      s­   ðñ	÷ +× *× *Ý Û à
ˆ"�)‰)�KÐ!6Ó
7€Ø&€Ø€	Ø0€	Ø€Ø€ð QØÐ:Ñ:Ø'ñ€óò&ò(	òDòN ò
ð KLó-ó`Ròj
>ð ˆzÒÙ…Fð r7   