Ë
    ¡Š£jì#  ã                   óâ   — 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m	Z	 ddl
ZdZdZedz   ZdZdd	d
ddœZdZdZ ej&                  «       Zh d£Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u:   æ¹›æ±Ÿç»�æµŽæŠ€æœ¯å¼€å�‘åŒº â€” æ„�è§�å¾�é›† (yjzj) çˆ¬è™«é    N)ÚBeautifulSoupz/root/search.dbzhttp://www.zetdz.gov.cnz$/hdjlpt/letter/cms/classify/articlesu(   æ¹›æ±Ÿç»�æµŽæŠ€æœ¯å¼€å�‘åŒº-æ„�è§�å¾�é›†z[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36zzh-CN,zh;q=0.9z.application/json, text/javascript, */*; q=0.01ÚXMLHttpRequest)z
User-AgentzAccept-LanguageÚAcceptzX-Requested-Withé   é   >)   ÚpÚddÚdlÚdtÚh1Úh2Úh3Úh4Úh5Úh6ÚhrÚliÚolÚtdÚthÚtrÚulÚdivÚnavÚpreÚformÚmainÚasideÚtableÚtbodyÚtfootÚtheadÚcenterÚdialogÚfigureÚfooterÚheaderÚhgroupÚaddressÚarticleÚcaptionÚdetailsÚsectionÚfieldsetÚ
blockquoteÚ
figcaptionc                 óÒ   ‡‡‡— | €yddl }ddlmŠ g Šˆˆˆfd„Š ‰| «       dj                  ‰«      }|j	                  dd|«      }|j	                  dd	|«      }|j                  «       S )
ul   å�—çº§è¾¹ç•Œå‡ºæ�¢è¡Œã€�è¡Œå†…èŠ‚ç‚¹ç›´æŽ¥æ‹¼æŽ¥ã€�<br> å‡ºæ�¢è¡Œï¼ˆâ‰ˆ æµ�è§ˆå™¨çœ‹åˆ°çš„æ�¢è¡Œç»“æž„ï¼‰ã€‚NÚ r   )ÚNavigableStringc                 óF  •— | j                   D ]‘  }t        |‰«      r‰j                  t        |«      «       Œ*t	        |dd «      dk(  r‰j                  d«       ŒLt	        |dd «      t
        v r+‰j                  d«        ‰|«       ‰j                  d«       ŒŠ ‰|«       Œ“ y )NÚnameÚbrú
)ÚchildrenÚ
isinstanceÚappendÚstrÚgetattrÚ_BLOCK_TAGS)ÚnodeÚchr3   ÚoutÚwalks     €€€ú%/root/gov_crawler/crawl_zetdz_yjzj.pyrA   zbody_text.<locals>.walk+   s„   ø€ Ø—-‘-ò 
	ˆBÜ˜"˜oÔ.Ø—
‘
œ3˜r›7Õ#Ü˜˜V TÓ*¨dÒ2Ø—
‘
˜4Õ Ü˜˜V TÓ*¬kÑ9Ø—
‘
˜4Ô Ù�R”Ø—
‘
˜4Õ á�R•ñ
	ó    z[ \t\r\f\v]*\n[ \t\r\f\v]*r7   z\n{3,}z

)ÚreÚbs4r3   ÚjoinÚsubÚstrip)ÚelÚ_reÚtr3   r@   rA   s      @@@rB   Ú	body_textrL   #   sb   ú€ à	€zØÛÝ#Ø
€Cöñ 	ˆ„HØ
�‰�‹€AØ�‰Ð-¨t°QÓ7€AØ�‰�	˜6 1Ó%€AØ�7‰7‹9ÐrC   c                  óü   — 	 t         j                  t        dz   t        d¬«      } t	        j
                  d| j                  «      }|r|j                  d«      S 	 y# t        $ r}t        d|› �«       Y d}~yd}~ww xY w)	u/   èŽ·å�–CSRF tokenï¼ˆå¤�ç”¨sessionä¿�æŒ�cookieï¼‰z/hdjlpt/c_cat?name=yjzj&via=pcr   ©ÚheadersÚtimeoutz_CSRF\s*=\s*'([^']+)'é   u     [ERR] CSRFèŽ·å�–å¤±è´¥: Nr2   )
ÚsessÚgetÚBASEÚHEADERSrD   ÚsearchÚtextÚgroupÚ	ExceptionÚprint)ÚrÚmÚes      rB   Úget_csrfr^   >   sƒ   € ð
0Ü�H‰HÜÐ3Ñ3ÜØð ó 
ˆô
 �I‰IÐ.°·±Ó7ˆÙØ—7‘7˜1“:Ðð ð øô ò 0ÜÐ*¨1¨#Ð.×/Ð/Øûð0ús   ‚AA Á	A;Á#A6Á6A;c                 óÒ   — | t         z  t         d|dœ}	 t        j                  t        |t        d¬«      }|j                  «       S # t        $ r}t        d|› �«       Y d}~yd}~ww xY w)u(   èŽ·å�–åˆ—è¡¨é¡µæ•°æ�®ï¼ˆå¤�ç”¨sessionï¼‰ÚYJZJ)ÚoffsetÚlimitÚclassifyÚ_tokenr   )ÚdatarO   rP   u     [ERR] åˆ—è¡¨è¯·æ±‚å¤±è´¥: N)ÚPER_PAGErR   ÚpostÚLIST_APIrU   ÚjsonrY   rZ   )ÚpageÚcsrfÚpayloadr[   r]   s        rB   Ú
fetch_listrm   M   sg   € ð œ‘/ÜØØñ	€Gð2Ü�I‰I”h W´gÀrˆIÓJˆØ�v‰v‹xˆøÜò 2ÜÐ,¨Q¨CÐ0×1Ð1Øûð2ús   ”0A Á	A&ÁA!Á!A&c                 ó€  — 	 t         j                  | t        d¬«      }d|_        t        |j                  d«      }d}|j                  d	«      }|r-|j                  d
¬«      }t        j                  dd|«      }|r|}d}|j                  dddi¬«      }|r=|j                  d«      r,t        j                  d|d   «      }	|	r|	j                  d«      }d}
|j                  dd¬«      }|rt        |«      }
|
s |j                  dd¬«      }|rt        |«      }
|||
fS # t        $ r}t        d|› �«       Y d}~yd}~ww xY w)u*   ä»Žè¯¦æƒ…é¡µæ��å�–æ ‡é¢˜ã€�æ—¥æœŸã€�å†…å®¹r   rN   zutf-8u     [ERR] è¯¦æƒ…è¯·æ±‚å¤±è´¥: N)NNNzhtml.parserr2   ÚtitleT)rH   u;   \s*[â€”\-â€“]\s*æ¹›æ±Ÿç»�æµŽæŠ€æœ¯å¼€å�‘åŒºé—¨æˆ·ç½‘ç«™\s*$Úmetar5   Úpubdate)ÚattrsÚcontentz(\d{4}-\d{2}-\d{2})rQ   r   zquestion-content)Úidzarticle-content)rR   rS   rU   ÚencodingrY   rZ   r   rW   ÚfindÚget_textrD   rG   rV   rX   rL   )Úurlr[   r]   Úsoupro   Út_tagrK   ÚdateÚ	meta_dater\   rs   ÚqcÚacs                rB   Úextract_detailr   \   sA  € ð Ü�H‰H�S¤'°2ˆHÓ6ˆàˆŒ
ô ˜Ÿ™ Ó/€Dà€EØ�I‰I�gÓ€EÙØ�N‰N ˆNÓ&ˆä�F‰FÐQÐSUÐWXÓYˆÙØˆEà€DØ—	‘	˜&¨°Ð(;�	Ó<€IÙ�Y—]‘] 9Ô-Ü�I‰IÐ,¨i¸	Ñ.BÓCˆÙØ—7‘7˜1“:ˆDð €GØ	�‰�5Ð/ˆÓ	0€BÙ	Ü˜B“-ˆÙØ�Y‰Y�uÐ!2ˆYÓ3ˆÙÜ “mˆGØ�$˜ÐÐøô= ò  ÜÐ,¨Q¨CÐ0Ô1Üûð ús   ‚#D Ä	D=Ä%D8Ä8D=c                  ó®
  — t        j                  d¬«      } | j                  dt        t        d¬«       | j                  «       }|j                  }t        d«       t        «       }|s t        d«       t        j                  d«       t        d	|d d
 › d�«       t        j                  t        «      }|j                  «       }dx}}t        |«      D �]Þ  }t        d|dz   › d|t         z  › �«       t#        ||«      }	|	r|	j%                  d«      dk7  rt        d|	› �«        �n�|	j%                  di «      j%                  dg «      }
|	j%                  di «      j%                  dd«      }|
st        d«        �n<t        dt'        |
«      › d|› d�«       |
D �]ø  }|j%                  dd«      j)                  «       }|j%                  dd«      }|j%                  dd«      }|j%                  dd«      xs |j%                  dd«      }|j%                  dd«      }|j%                  dd«      xs |j%                  d d«      }|xs t*        › d!|› �}t*        }d}dd l}|r+|j,                  j/                  |«      j1                  d"«      }n,|r*|j,                  j/                  |«      j1                  d"«      }|s�Œ|j3                  d#|f«       |j5                  «       rt        d$|d d% › d&|› �«       |dz  }�Œ\d}|r|j7                  d'«      s|}n|rt9        |«      \  }}}|xs d}t'        |«      d(k  rt        d)t'        |«      › d*�«       	 |j3                  d+|||||t:        d,d-f«       |j=                  «        t        d.|d d% › d&|› �«       |dz  }�Œû |t         z  t         z   |k\  s�ŒÔt        d/«        n t        d0d1› �«       t        d2|› d3|› �«       |dkD  �r"t        d4«       |j3                  d5«      jA                  «       }|rëd6}g }|D ]j  \  }} }!}"|"xs dd d7 jC                  d8d9«      }#| xs djC                  d8d9«      }$|!xs djC                  d8d9«      }%|jE                  d:|› d;|$› d<|%› d<|#› d=�	«       Œl |d>jG                  |«      d?z   z  }tI        jJ                  d@t        g|dAdAdB¬C«      }&|&jL                  dk(  rt        dDt'        |«      › dE�«       n$t        dF|&jN                  › �«       nt        dG«       |jQ                  «        t        dH|› dI|› dJ�«       y # t        j>                  $ r$}t        d$|d d% › d&|› �«       |dz  }Y d }~�Œ»d }~ww xY w)KNu"   æ¹›æ±Ÿç»�å¼€åŒº-æ„�è§�å¾�é›†çˆ¬è™«)Údescriptionz--pagesu   æœ€å¤§çˆ¬å�–é¡µæ•°)ÚtypeÚdefaultÚhelpu   èŽ·å�–CSRF token...u   [ERR] æ— æ³•èŽ·å�–CSRF tokenrQ   z  CSRF: r   z...r   z
[PAGE z	] offset=Úerrcodeu     [ERR] APIè¿”å›žé”™è¯¯: re   ÚlistÚtotalu     [EMPTY] æ— æ›´å¤šæ�¡ç›®u     [LIST] æœ¬é¡µ u    æ�¡ (æ€»å…± ú)ro   r2   rt   rs   rx   Úpost_urlÚpublish_timeÚdisplay_publish_timeÚfirst_publish_timez/hdjlpt/yjzj/answer/z%Y-%m-%dz'SELECT id FROM gov_raw WHERE page_url=?z  [DUP] é(   z - Úhttpé
   u     [WARN] æ­£æ–‡è¿‡çŸ­ (u   å­—ç¬¦)z‚INSERT INTO gov_raw (title, content, publish_date, source_url, page_url, site_name, group_name, industry) VALUES (?,?,?,?,?,?,?,?)u   å¹¿ä¸œu   æ”¿åºœå…¬å‘Šz  [NEW] u     [END] å·²åˆ°æœ€å�Žä¸€é¡µr7   z2==================================================u   æ–°å¢ž: u    | é‡�å¤�: u   å�Œæ­¥FTS...z`SELECT id, title, site_name, content FROM gov_raw WHERE id NOT IN (SELECT rowid FROM gov_search)z@INSERT INTO gov_search(rowid, title, site_name, summary) VALUES
iô  ú'z''ú(z,'z','z')z,
ú;Úsqlite3Té   )ÚinputÚcapture_outputrW   rP   u   FTSå�Œæ­¥å®Œæˆ�: u   æ�¡u   FTSå�Œæ­¥å¤±è´¥: u   FTSæ— éœ€å�Œæ­¥u   å®Œæˆ�! å…± u    æ–°, u    é‡�å¤�))ÚargparseÚArgumentParserÚadd_argumentÚintÚ	MAX_PAGESÚ
parse_argsÚpagesrZ   r^   ÚsysÚexitr“   ÚconnectÚDBÚcursorÚrangerf   rm   rS   ÚlenrH   rT   ÚdatetimeÚfromtimestampÚstrftimeÚexecuteÚfetchoneÚ
startswithr   Ú	SITE_NAMEÚcommitÚIntegrityErrorÚfetchallÚreplacer:   rF   Ú
subprocessÚrunÚ
returncodeÚstderrÚclose)'ÚparserÚargsÚ	max_pagesrk   ÚconnÚcÚ	total_newÚ	total_dupÚpgre   Úitemsr‡   Úitemro   Úitem_idÚraw_contentÚapi_urlÚpub_tsÚ
display_tsÚpage_urlÚ
source_urlr{   r¥   rs   r   r	   Údcr]   ÚrowsÚsqlÚvalsÚrow_idrK   ÚsnÚ_ÚsummaryÚt_escÚsn_escÚprocs'                                          rB   r   r   ‚   sX  € Ü×$Ñ$Ð1UÔV€FØ
×Ñ˜	¬´YÐEYÐÔZØ×ÑÓ€DØ—
‘
€Iä	Ð
Ô Ü‹:€DÙÜÐ,Ô-Ü�‰�ŒÜ	ˆH�T˜#˜2�Y�K˜sÐ
#Ô$ä�?‰?œ2Ó€DØ�‰‹€AàÐ€I�	ä�IÓó HˆÜ�˜˜A™˜˜i¨¬8© }Ð5Ô6Ü˜"˜dÓ#ˆÙ�t—x‘x 	Ó*¨aÒ/ÜÐ-¨d¨VÐ4Ô5Úà—‘˜ Ó$×(Ñ(¨°Ó4ˆØ—‘˜ Ó$×(Ñ(¨°!Ó4ˆÙÜÐ-Ô.ÚäÐ ¤ U£ ¨M¸%¸ÀÐBÔCàó 5	ˆDØ—H‘H˜W bÓ)×/Ñ/Ó1ˆEØ—h‘h˜t RÓ(ˆGØŸ(™( 9¨bÓ1ˆKØ—h‘h˜u bÓ)ÒE¨T¯X©X°jÀ"Ó-EˆGØ—X‘X˜n¨aÓ0ˆFØŸ™Ð"8¸!Ó<ÒaÀÇÁÐI]Ð_`Ó@aˆJð ÒH¤T FÐ*>¸w¸iÐ"HˆHÜˆJð ˆDÛÙØ×(Ñ(×6Ñ6°zÓB×KÑKÈJÓW‘ÙØ×(Ñ(×6Ñ6°vÓ>×GÑGÈ
ÓS�áÙð �I‰IÐ?À(ÀÔMØ�z‰zŒ|Ü˜  s¨  ¨C°¨vÐ6Ô7Ø˜Q‘�	Ùð ˆGÙ ;×#9Ñ#9¸&Ô#AØ%‘Ùä+¨HÓ5‘
��B˜Øš( �ä�7‹|˜bÒ ÜÐ/´°G³¨~¸WÐEÔFð
Ø—	‘	ð YØ˜G T¨:°xÄÈHÐVdÐeôð —‘”Ü˜  s¨  ¨C°¨vÐ6Ô7Ø˜Q‘’	ðe5	ðn ”‰=œ8Ñ# uÔ,ÜÐ.Ô/ÙðQHôV 
ˆBˆvˆhˆ-ÔÜ	ˆH�Y�K˜{¨9¨+Ð
6Ô7Ø�1ƒ}ÜˆnÔØ�y‰yØnó
ç
‰(‹*ð 	ñ ØUˆCØˆDØ$(ò LÑ �˜˜2˜qØš7  D S˜/×1Ñ1°#°tÓ<�Øš˜b×)Ñ)¨#¨tÓ4�Øš( ×+Ñ+¨C°Ó6�Ø—‘˜a ˜x r¨%¨°°F°8¸3¸w¸iÀrÐJÕKð	Lð
 �5—:‘:˜dÓ# cÑ)Ñ)ˆCÜ—>‘>ØœB�ØØ#ØØôˆDð �‰ !Ò#ÜÐ)¬#¨d«)¨°CÐ8Õ9äÐ)¨$¯+©+¨Ð7Õ8äÐ#Ô$Ø‡J�J„LÜ	ˆL˜˜ 6¨)¨°GÐ
<Õ=øôO ×)Ñ)ò Ü˜  s¨  ¨C°¨sÐ3Ô4Ø˜Q‘–	ûðús   ÍATÔUÔ0UÕUÚ__main__)Ú__doc__Úrequestsr“   rD   rž   Úosr—   r°   rE   r   Úurllib.parseÚurllibr¡   rT   rh   r«   rU   rf   r›   ÚSessionrR   r=   rL   r^   rm   r   r   Ú__name__© rC   rB   ú<module>rÚ      sŸ   ðñ Aß ;× ;× ;Ó ;Ý Û à€Ø €ØÐ8Ñ8€Ø6€	àoØ'Ø>Ø(ñ	€ð €Ø€	ð €x×ÑÓ€ò*€òò6òò$ òL{>ð| ˆzÒÙ…Fð rC   