Ë
    Í«£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m	Z	 ddl
Z
dZedz   ZdZdZdZej                   j#                  d	d
«      ZddiZdZ eej,                  «      D ]=  \  ZZedk(  sŒedz    eej,                  «      k  sŒ% eej,                  edz      «      Z n dd„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!e"dk(  r e!«        yy)u   äº‘å¤©åŒ–è‚¡ä»½ - å…¬ç¤ºå…¬å‘Šé    N)ÚBeautifulSoupzhttps://www.yyth.com.cnz/xwzx/gsgg{}.htmlu   äº‘å¤©åŒ–-å…¬ç¤ºå…¬å‘Šu!   äº‘å�—äº‘å¤©åŒ–è‚¡ä»½æœ‰é™�å…¬å�¸u   çŽ¯è¯„å¹³å�°Ú	SEARCH_DBz/root/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z--pagesé   c                 óÊ  — ddl }t        t        | «      d«      }|j                  d«      D ]L  }|j	                  dd«      }|sŒ|j                  d«      rŒ*|r|j                  j                  ||«      n||d<   ŒN |j                  d«      D ]L  }|j	                  d	d«      }|sŒ|j                  d
«      rŒ*|r|j                  j                  ||«      n||d	<   ŒN t        |«      S )uA   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼Œä»…å°†ç›¸å¯¹é“¾æŽ¥/å›¾ç‰‡è½¬ç»�å¯¹ URLr   Núhtml.parserÚaÚhrefÚ )ÚhttpÚ
javascriptú#ÚimgÚsrc)r   z//zdata:)Úurllib.parser   ÚstrÚfind_allÚgetÚ
startswithÚparseÚurljoin)ÚtableÚbase_urlÚurllibÚtblr   r	   r   r   s           úcrawl_yyth.pyÚhtml_table_to_htmlr      sÐ   € ãÜ
œ˜E›
 MÓ
2€CØ�\‰\˜#Óò SˆØ�u‰u�V˜RÓ ˆÚ˜Ÿ™Ð(CÕDÙ@H˜Ÿ™×,Ñ,¨X°tÔ<ÈdˆAˆfŠIðSð �|‰|˜EÓ"ò RˆØ�g‰g�e˜RÓ ˆÚ�s—~‘~Ð&=Õ>Ù@H˜Ÿ™×-Ñ-¨h¸Ô<ÈcˆC�ŠJðRô ˆs‹8€Oó    c                 ó<  — t         j                  j                  | t        ¬«      }	 t         j                  j	                  |d¬«      j                  «       j                  dd¬«      S # t        $ r+}t        d| › d|› �t        j                  ¬	«       Y d }~y
d }~ww xY w)N)Úheadersé   )Útimeoutzutf-8Úreplace)Úerrorsz[WARN] fetch failed: ú - ©Úfiler
   )r   ÚrequestÚRequestÚHEADERSÚurlopenÚreadÚdecodeÚ	ExceptionÚprintÚsysÚstderr)ÚurlÚreqÚes      r   Úfetchr4   #   sƒ   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CðÜ�~‰~×%Ñ% c°2Ð%Ó6×;Ñ;Ó=×DÑDÀWÐU^ÐDÓ_Ð_øÜò ÜÐ% c U¨#¨a¨SÐ1¼¿
¹
ÕCÜûðús   §?A' Á'	BÁ0!BÂBc                 ó¨  — t        | d«      }g }|j                  d«      D ]¯  }|j                  ddd¬«      }|sŒ|d   j                  «       }|j                  dd	¬
«      }|r|j	                  d¬«      nd}|j                  dd¬
«      }|r|j	                  d¬«      nd}	|r|j                  d«      s	t        |z   }|j                  |	||dœ«       Œ± |S )Nr   zdl.textList1 > dd.wowr   ÚconT)Úclass_r	   r	   ÚdivÚtime)r7   ©Ústripr
   Útxtr   )Útitler1   Údate)r   ÚselectÚfindr;   Úget_textr   ÚBASE_URLÚappend)
ÚhtmlÚsoupÚitemsÚddr   r	   Útime_divÚ	date_textÚtxt_divr=   s
             r   Úextract_itemsrK   +   sÛ   € Ü˜˜}Ó-€DØ€EØ�k‰kÐ1Ó2ò GˆØ�G‰G�C ¨DˆGÓ1ˆÙØØ�‰y�‰Ó ˆØ—6‘6˜%¨�6Ó/ˆÙ5=�H×%Ñ%¨DÐ%Ô1À2ˆ	Ø—&‘&˜ u�&Ó-ˆÙ07�× Ñ  tÐ Ô,¸RˆÙ˜Ÿ™¨Ô/Ü˜d‘?ˆDØ�‰˜u¨T¸9ÑEÕFðGð €Lr   c                 óL  — t        | d«      }d}|j                  d«      D ]�  }|j                  d¬«      }|j                  «       rt	        |«      }||kD  r|}t        j                  d|j                  dd«      «      }|sŒ`t	        |j                  d«      «      }||kD  sŒ€|}Œƒ |S )	Nr   r   zdiv.page a[href]Tr:   zindex_(\d+)\.htmlr	   r
   )	r   r?   rA   ÚisdigitÚintÚreÚsearchr   Úgroup)rD   rE   Úmax_pager   ÚtextÚpÚms          r   Úget_total_pagesrV   <   s�   € Ü˜˜}Ó-€DØ€HØ�[‰[Ð+Ó,ò 
ˆØ�z‰z ˆzÓ%ˆØ�<‰<Œ>Ü�D“	ˆAØ�8Š|Ø�Ü�I‰IÐ*¨A¯E©E°&¸"Ó,=Ó>ˆÚÜ�A—G‘G˜A“J“ˆAØ�8‹|Ø‘ð
ð €Or   c                 óx   — | dk(  rt         j                  d«      S t         j                  dt        | «      z   «      S )Nr   r
   z/index_)ÚLIST_URLÚformatr   )Úpages    r   Úget_list_urlr[   L   s0   € Øˆq‚yÜ�‰˜rÓ"Ð"Ü�?‰?˜9¤s¨4£yÑ0Ó1Ð1r   c                 ó  ‡— t        | d«      }d}|j                  d«      }|r|j                  d¬«      }d}|j                  d«      }|rY|j                  d«      }t	        |«      dk\  r:t        j                  d	|d
   j                  «       «      }|r|j                  d
«      }|j                  d«      }	|	s%t        d|› �t        j                  ¬«       ||dg dœS g }
g }|	j                  g d¢d¬«      D �]:  }|j                  dk(  r|j                  d«      rŒ%|j                  dk(  r|j                  d«      rŒF|j                  dk(  �r|j                  dd¬«      }|j                  dd¬«      D ]Ò  }|d   j                  «       }t        j                  d|t
        j                  «      sŒ<|j                  d¬«      xs |j                  dd«      }|j!                  d«      r	t"        |z   n-|j!                  d«      s|j%                  dd
«      d   dz   |z   n|Št'        ˆfd„|
D «       «      rŒ¿|
j)                  |‰dœ«       ŒÔ |s�ŒU|j)                  |«       �Œh|j                  dk(  r#t+        ||«      }|s�Œ‡|j)                  |«       �Œš|j                  dk(  s�Œ«|j                  dd«      }|j                  d d«      }|s�ŒÓ|j!                  d«      r	t"        |z   n-|j!                  d«      s|j%                  dd
«      d   dz   |z   n|}|j)                  |r	d!|› d"|› d#�nd$|› d#�«       �Œ= t-        «       }g }|
D ]/  }|d%   |vsŒ|j/                  |d%   «       |j)                  |«       Œ1 ||d&j1                  |«      |dœS )'Nr   r
   zdiv.articleTitleTr:   zdiv.articleTimeÚspané   z(\d{4}-\d{2}-\d{2})r   zdiv.articleBoxz[WARN] No content: r%   )r=   r>   ÚcontentÚattachments)rT   r   r   )Ú	recursiverT   r   ú r   )r	   r	   z\.(pdf|docx?|xlsx?|zip|rar)$Údownloadú/r   r   c              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­w)r1   N© )Ú.0ÚattÚahrefs     €r   ú	<genexpr>zparse_detail.<locals>.<genexpr>q   s   øè ø€ ÒJ°s˜s 5™z¨UÕ2ÑJùs   ƒ)r=   r1   r   r   Úaltz![z](ú)z![](r1   z

)r   Ú
select_onerA   r   ÚlenrO   rP   rQ   r.   r/   r0   ÚnameÚfind_parentr;   ÚIr   r   rB   ÚrsplitÚanyrC   r   ÚsetÚaddÚjoin)rD   r1   rE   r=   Út_divrI   rH   ÚspansrU   Úbodyr`   ÚpartsÚelrS   r   r	   ÚatitleÚtbl_htmlr   rk   ÚseenÚuarh   ri   s                          @r   Úparse_detailr€   Q   se  ø€ Ü˜˜}Ó-€DØ€EØ�O‰OÐ.Ó/€EÙØ—‘ T�Ó*ˆØ€IØ�‰Ð0Ó1€HÙØ×!Ñ! &Ó)ˆÜˆu‹:˜Š?Ü—	‘	Ð0°%¸±(×2CÑ2CÓ2EÓFˆAÙØŸG™G A›J�	Ø�?‰?Ð+Ó,€DÙÜÐ# C 5Ð)´·
±
Õ;Ø¨	¸bÐQSÑTÐTØ€KØ€EØ�m‰mÒ1¸TˆmÓBó KˆØ�7‰7�cŠ>˜bŸn™n¨WÔ5ØØ�7‰7�gÒ "§.¡.°Ô"9ØØ�7‰7�c‹>Ø—;‘;˜s¨$�;Ó/ˆDØ—[‘[ ¨4�[Ó0ò L�Ø˜‘y—‘Ó(�Ü—9‘9Ð<¸dÄBÇDÁDÕIØŸZ™Z¨d˜ZÓ3ÒL°q·u±u¸ZÈÓ7L�FØ/3¯©¸sÔ/CœH tšOÐtx÷  uDñ  uDð  EKô  uLÈ#Ï*É*ÐUXÐZ[ÓJ\Ð]^ÑJ_ÐbeÑJeÐhlÒJlð  RV�EÜÓJ¸kÔJÕJØ#×*Ñ*°VÀEÑ+JÕKðLó Ø—‘˜TÖ"Ø�W‰W˜ÒÜ)¨"¨cÓ2ˆHÛØ—‘˜XÖ&Ø�W‰W˜ÔØ—&‘&˜ Ó#ˆCØ—&‘&˜ Ó#ˆCÛØ(+¯©°sÔ(;”h ’nÐkn×kyÑkyð  {Aô  lBÀ#Ç*Á*ÈSÐRSÓBTÐUVÑBWÐZ]ÑB]Ð`cÒBcð  HK�Ø—‘±3˜r #  b¨¨¨QÑ/¸dÀ3À%Àq¸MÖJð3Kô4 ‹5€DØ	€BØò ˆØˆu‰:˜TÒ!Ø�H‰H�S˜‘ZÔ Ø�I‰I�c�Nðð  I¸&¿+¹+ÀeÓ:LÐ]_Ñ`Ð`r   c                  ó0  — t        t        d«      «      } | s0t        dt        j                  ¬«       t        j
                  d«       t        | «      }t        d|› �t        j                  ¬«       t        r9|t        kD  r0t        dt        › dt        › d�t        j                  ¬«       t        }g }t        d|dz   «      D ]€  }t        |«      }t        d|› d	|› �t        j                  ¬«       t        |«      } | sŒ=t        | «      }t        d
t        |«      › d�t        j                  ¬«       |j                  |«       Œ‚ t        dt        |«      › �t        j                  ¬«       t        j                  t        «      }|j                  d«       |j!                  «       }dx}x}	}
|D �]p  }|j                  d|d   f«       |j#                  «       rŒ+t        |d   «      } | sŒ<t%        | |d   «      }|d   xs |d   }|d   xs |d   }|d   }|d   }t'        j(                  ddt'        j(                  dd|«      «      j+                  «       }|d d }|s|	dz  }	d}|rVt'        j,                  d|«      }|r>t/        |j1                  d«      |j1                  d«      z   |j1                  d«      z   «      }|rt3        j4                  |d¬«      nd}	 |j                  d |t6        t8        |d   |||||f	«       |j:                  dkD  r|dz  }|
t        |«      z  }
�Œs |j?                  «        |jA                  «        t        d$t6        › d%|› d&|	› d'|
› d(�	«       y # t<        $ r/}t        d!|d d" › d#|› �t        j                  ¬«       Y d }~�Œäd }~ww xY w))Nr   z[ERROR] Cannot fetch list pager%   z[INFO] Total pages: z[INFO] Limiting to z pages (--pages=rl   z[INFO] Fetching page rd   z[INFO] Found z itemsz[INFO] Total items: zPRAGMA busy_timeout = 60000r   z'SELECT id FROM gov_raw WHERE page_url=?r1   r=   r>   r_   r`   z\s+rb   z<[^>]+>r
   éÈ   z(\d{4})-(\d{2})-(\d{2})r^   é   F)Úensure_asciiz[]z™INSERT OR IGNORE INTO gov_raw (title, site_name, group_name, page_url, publish_date, content, summary, attachments, date_rank) VALUES (?,?,?,?,?,?,?,?,?)z[ERROR] DB: r    r$   z

[RESULT] z: z new, z empty, z attachments)!r4   r[   r.   r/   r0   ÚexitrV   Ú_MAX_PGÚrangerK   rn   ÚextendÚsqlite3ÚconnectÚDBÚexecuteÚcursorÚfetchoner€   rO   Úsubr;   rP   rN   rQ   ÚjsonÚdumpsÚ	SITE_NAMEÚ
GROUP_NAMEÚrowcountr-   ÚcommitÚclose)rD   Útotal_pagesÚ	all_itemsÚpgr1   rF   ÚconnÚcÚ	new_countÚempty_contentÚtotal_attachmentsÚitemÚdetailr=   rI   r_   r`   ÚplainÚsummaryÚ	date_rankrU   Úatt_jsonr3   s                          r   Úmainr¥   ‡   sM  € Ü”˜a“Ó!€DÙÜÐ.´S·Z±ZÕ@Ü�‰�ŒÜ! $Ó'€KÜ	Ð   Ð
.´S·Z±ZÕ@Ý�;¤Ò(ÜÐ#¤G 9Ð,<¼W¸IÀQÐGÌcÏjÉjÕYÜˆØ€IÜ�A�{ Q‘Ó'ò  ˆÜ˜2ÓˆÜÐ% b T¨¨;¨-Ð8¼s¿z¹zÕJÜ�S‹zˆÙØÜ˜dÓ#ˆÜ�œc %›j˜\¨Ð0´s·z±zÕBØ×Ñ˜Õð ô 
Ð ¤ Y£Ð 0Ð
1¼¿
¹
ÕCÜ�?‰?œ2Ó€DØ‡L�LÐ.Ô/Ø�‰‹€AØ45Ð5€IÐ5�Ð 1Øó FˆØ	�	‰	Ð;¸dÀ5¹k¸^ÔLØ�:‰:Œ<ØÜ�T˜%‘[Ó!ˆÙØÜ˜d D¨¡KÓ0ˆØ�w‘Ò0 4¨¡=ˆØ˜6‘NÒ2 d¨6¡lˆ	Ø˜Ñ#ˆØ˜]Ñ+ˆÜ—‘�v˜s¤B§F¡F¨:°r¸7Ó$CÓD×JÑJÓLˆØ˜˜�+ˆÙØ˜QÑˆMØˆ	ÙÜ—	‘	Ð4°iÓ@ˆAÙÜ §¡¨£
¨Q¯W©W°Q«ZÑ 7¸!¿'¹'À!»*Ñ DÓE�	ÙBM”4—:‘:˜k¸Õ>ÐSWˆð	FØ�I‰Ið  rØœi¬°T¸%±[À)ÈWÐV]Ð_gÐirÐsôuà�z‰z˜AŠ~Ø˜Q‘�	Ø!¤S¨Ó%5Ñ5Ð!ùð7Fð< 	‡K�K„MØ‡J�J„LÜ	ˆKœ	�{ " Y K¨v°m°_ÀHÐM^ÐL_Ð_kÐ
lÕmøô	 ò 	FÜ�L  s¨  ¨C°¨sÐ3¼#¿*¹*×EÓEûð	Fús   ËAMÍ	NÍ&$NÎNÚ__main__)r
   )#Ú__doc__rO   r/   Úosr�   Úurllib.requestr   Úurllib.errorÚbs4r   r‰   rB   rX   r’   ÚSITE_DISPLAYr“   Úenvironr   r‹   r)   r†   Ú	enumerateÚargvÚir   rn   rN   r   r4   rK   rV   r[   r€   r¥   Ú__name__rf   r   r   ú<module>r²      så   ðá $ß × ß #Ý Û à$€ØÐ)Ñ)€Ø$€	Ø2€Ø€
Ø‡Z�Z‡^�^�KÐ!2Ó3€ØÐWÐ
X€à
€Ù�c—h‘hÓò �D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ù�c—h‘h˜q 1™u‘oÓ&ˆÙðó
òòò"ò 2ò
4aòl9nðv ˆzÒÙ…Fð r   