Ë
    ¬¬£j`&  ã                   óX  — 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Zddl	Z
 ej                  d«       dZdZdZdZdZej"                  j%                  d	d
«      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 e€G eej,                  «      dkD  r2ej,                  d   j7                  «       r eej,                  d   «      Zdeez   dœZh d£Zd„ Zdd„Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$e%dk(  r e$«        yy)u»   è‚‡åº†å¸‚çŽ¯ç§‘æ‰€çŽ¯å¢ƒç§‘æŠ€æœ‰é™�å…¬å�¸ å…¬ç¤ºå…¬å‘Šçˆ¬è™«
ç«™ç‚¹: http://www.zqeia.com/h-col-101.html
CMS: å‡¡ç§‘(Faisco)å»ºç«™
åˆ—è¡¨: JSå†…åµŒnewsListæ•°æ�®
è¯¦æƒ…: /h-nd-{id}.html
é    NÚignorezhttp://www.zqeia.comz/h-col-101.htmlu   è‚‡åº†çŽ¯ç§‘æ‰€-å…¬ç¤ºå…¬å‘Šu*   è‚‡åº†å¸‚çŽ¯ç§‘æ‰€çŽ¯å¢ƒç§‘æŠ€æœ‰é™�å…¬å�¸u   çŽ¯è¯„å¹³å�°Ú	SEARCH_DBz/root/search.dbz--pagesé   z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36)z
User-AgentÚReferer>)   Ú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Úchr2   ÚoutÚwalks     €€€úcrawl_zqeia.pyr@   zbody_text.<locals>.walk2   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]*r6   z\n{3,}ú

)ÚreÚbs4r2   ÚjoinÚsubÚstrip)ÚelÚ_reÚtr2   r?   r@   s      @@@rA   Ú	body_textrL   *   sb   ú€ à	€zØÛÝ#Ø
€Cöñ 	ˆ„HØ
�‰�‹€AØ�‰Ð-¨t°QÓ7€AØ�‰�	˜6 1Ó%€AØ�7‰7‹9ÐrB   c                 óØ  — ddl m}  |t        | «      d«      }|j                  d«      D ]P  }|j	                  dd«      }|sŒ|j                  d«      rŒ*|r t        j                  j                  ||«      n||d<   ŒR |j                  d«      D ]P  }|j	                  d	d«      }|sŒ|j                  d
«      rŒ*|r t        j                  j                  ||«      n||d	<   ŒR t        |«      S )uA   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼Œä»…å°†ç›¸å¯¹é“¾æŽ¥/å›¾ç‰‡è½¬ç»�å¯¹ URLr   ©ÚBeautifulSoupúhtml.parserÚaÚhrefr1   )ÚhttpÚ
javascriptú#ÚimgÚsrc)rS   ú//údata:)	rE   rO   r:   Úfind_allÚgetÚ
startswithÚurllibÚparseÚurljoin)r   Úbase_urlrO   ÚtblrQ   rR   rV   rW   s           rA   Úhtml_table_to_htmlrb   E   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€OrB   c                 óÐ   — 	 t        j                  | t        d¬«      }d|_        |j                  S # t
        $ r+}t        d| ›d|›�t        j                  ¬«       Y d }~yd }~ww xY w)Né   ©ÚheadersÚtimeoutúutf-8z[WARN] fetch failed: ú - ©Úfiler1   )	Úrequestsr[   ÚHEADERSÚencodingÚtextÚ	ExceptionÚprintÚsysÚstderr)ÚurlÚrÚes      rA   Ú
fetch_htmlrw   S   sO   € ðÜ�L‰L˜¤g°rÔ:ˆØˆŒ
Ø�v‰vˆøÜò Ý²±QÐ7¼c¿j¹jÕIÜûðús   ‚.1 ±	A%º!A Á A%c                 ó8  — g }t        j                  d| «      D ]—  }|j                  d«      }|j                  d«      }t        |j                  d«      «      }|dkD  r|dz  }|r)t	        j
                  dt	        j                  |«      «      nd}t        ›d	|›d
�}|j                  ||||dœ«       Œ™ t        «       }g }	|D ]/  }
|
d   |vsŒ|j                  |
d   «       |	j                  |
«       Œ1 t        dt        |	«      z  t        j                  ¬«       |	S )Nz?{"aid":\d+,"id":(\d+),"title":"((?:\\.|[^"\\])*)","date":(\d+),r   é   é   l    J)£iè  z%Y-%m-%dr1   z/h-nd-z.html)rt   ÚtitleÚdateÚidrt   u   [INFO] åˆ—è¡¨å…± %d æ�¡rj   )rD   ÚfinditerÚgroupÚintÚtimeÚstrftimeÚ	localtimeÚBASE_URLr9   ÚsetÚaddrq   Úlenrr   rs   )ÚhtmlÚitemsÚmÚitem_idr{   Útsr|   rt   ÚseenÚuniqueÚits              rA   Úextract_itemsr�   \   s  € Ø€EÜ�[‰[Ð[Ð]aÓbò PˆØ—'‘'˜!“*ˆØ—‘˜“
ˆÜ�—‘˜“‹_ˆØ�ÒØ�d‘ˆBÙ@BŒt�}‰}˜Z¬¯©¸Ó);Ô<ÈˆÞ#+ªWÐ5ˆØ�‰˜S¨5¸$ÀgÑNÕOðPô ‹5€DØ€FØò ˆØˆe‰9˜DÒ Ø�H‰H�R˜‘YÔØ�M‰M˜"Õðô 
Ð
#¤c¨&£kÑ
1¼¿
¹
ÕCØ€MrB   c                 óä  — t        j                  d| t         j                  «      }|rÉ|j                  d«      }t        j                  dd|t         j                  t         j
                  z  ¬«      }t        j                  dd|t         j                  t         j
                  z  ¬«      }t        j                  dd|t         j                  t         j
                  z  ¬«      }|j                  «       S y)NzY<div\s+class=["\']richContent[^"\']*["\'][^>]*>(.*?)</div>\s*<div\s+class=["\']line2["\']r   z<(script|style)[^>]*>.*?</\1>r1   )Úflagsz-<div\s+class="[^"]*share[^"]*"[^>]*>.*?</div>zB<div\s+class="[^"]*(?:print|tool|btn|operate)[^"]*"[^>]*>.*?</div>)rD   ÚsearchÚDOTALLr   rG   ÚIrH   )rˆ   rŠ   Úcs      rA   Úextract_content_htmlr—   p   s²   € Ü
�	‰	ÐnÐptÔvx×vÑvó  	A€AÙØ�G‰G�A‹JˆÜ�F‰FÐ3°R¸Ä"Ç)Á)ÌBÏDÉDÁ.ÔQˆÜ�F‰FÐCÀRÈÔRT×R[ÑR[Ô\^×\`Ñ\`ÑR`ÔaˆÜ�F‰FÐXÐZ\Ð^_Ôgi×gpÑgpÔqs×quÑquÑguÔvˆØ�w‰w‹yÐØrB   c                 óŽ  — | sdg fS ddl m}  || d«      }g }g }|j                  g d¢d¬«      D �]ø  }|j                  dk(  rÊ|j	                  d	d«      j                  «       }|j	                  d
d«      j                  «       }|r‡|j                  d«      sv|j                  d«      rd|z   }nG|j                  d«      r
t        |z   }n,|j                  d«      st        dz   |j                  d«      z   }|j                  d|›d|›d�«       ŒÝ|j                  d«      r|j                  dk7  rŒþ|j                  dk(  r|j                  t        |t        «      «       t        |«      }|s�Œ;|j                  dd¬«      D ]—  }	|	d   j                  «       }
|
j                  d«      sŒ(|	d   }|j                  d«      rd|z   }n|j                  d«      r	t        |z   }|j                  |	j                  d¬«      xs |j!                  d«      d   |dœ«       Œ™ |j                  |«       �Œû dj#                  d„ |D «       «      }||fS )Nr1   r   rN   rP   )r   r   rV   T)Ú	recursiverV   rW   ÚaltrY   rX   zhttp:ú/rS   z![z](ú)r   rQ   )rR   rR   )z.pdfz.docz.docxz.xlsz.xlsxz.zipz.rar©rH   éÿÿÿÿ)r4   rt   rC   c              3   óB   K  — | ]  }|j                  «       sŒ|–— Œ y ­w)Nr�   )Ú.0r   s     rA   ú	<genexpr>z#html_to_markdown.<locals>.<genexpr>ž   s   è ø€ Ò8 ¨a¯g©g­iœ!Ñ8ùs   ‚˜)rE   rO   rZ   r4   r[   rH   r\   r„   Úlstripr9   Úfind_parentrb   rL   ÚlowerÚendswithÚget_textÚsplitrF   )rˆ   rO   ÚsoupÚpartsÚattachmentsrI   rW   rš   ro   rQ   ÚhÚahÚcontents                rA   Úhtml_to_markdownr®   z   s  € ÙØ�2ˆvˆÝ!Ù˜˜}Ó-€DØ€EØ€KØ�m‰mÒ1¸TˆmÓBó ˆØ�7‰7�eÒØ—&‘&˜ Ó#×)Ñ)Ó+ˆCØ—&‘&˜ Ó#×)Ñ)Ó+ˆCÙ˜3Ÿ>™>¨'Ô2Ø—>‘> $Ô'Ø! C™-‘CØ—^‘^ CÔ(Ü" S™.‘CØŸ™¨Ô/Ü" S™.¨3¯:©:°c«?Ñ:�CØ—’ªC²Ð5Ô6ØØ�>‰>˜'Ô" r§w¡w°'Ò'9ØØ�7‰7�gÒØ�L‰LÔ+¨B´Ó9Ô:Ü˜‹}ˆÛØ—[‘[ ¨4�[Ó0ò i�Ø�f‘I—O‘OÓ%�Ø—:‘:ÐXÕYØ˜6™�BØ—}‘} TÔ*Ø$ r™\™ØŸ™ sÔ+Ü%¨™]˜Ø×&Ñ&°·
±
À°
Ó0FÒ0[È"Ï(É(ÐSVË-ÐXZÑJ[ÐdfÑ'gÕhðið �L‰L˜Öð9ð: �k‰kÑ8 UÔ8Ó8€GØ�KÐÐrB   c                  ó˜	  — t        ddz  t        j                  ¬«       t        dt        z  t        j                  ¬«       t        ddz  t        j                  ¬«       t	        t
        t        z   «      } | st        dt        j                  ¬«       y t        | «      }t        r@t        dz  }t        |«      |kD  r)t        d|t        fz  t        j                  ¬«       |d | }t        j                  t        «      }t        «       }	 |j                  d	t        f«      }|j                  «       D ]  }|j!                  |d
   «       Œ 	 |j#                  «        |D �cg c]  }|d   |vsŒ|‘Œ }}t        dt        |«      t        |«      fz  t        j                  ¬«       d
x}x}	x}
}t%        |d«      D �]S  \  }}d} t'        d«      D ]F  }	 t)        j*                  |d   t,        d¬«      }|j.                  dk(  rd|_        |j2                  }  nŒH | s|dz  }Œe|d   }|d   }t9        j:                  d| «      }|rE|j=                  d«      j?                  «       }d}|jA                  |«      r|d t        |«        }|r|}t9        j:                  d| «      }|r|j=                  d«      }tC        | «      }|r.t        t9        jD                  dd|«      j?                  «       «      nd
}|dk  r|
dz  }
�Œ>tG        |«      \  }}tI        jJ                  |d¬«      }t        j                  t        «      }|j                  d«       	 |d d jM                  dd«      j?                  «       }|j                  d |d   |t        tN        |||||f	«       |jQ                  «        |jR                  r|dz  }n|	dz  }	|j#                  «        |d#z  d
k(  r)t        d$|t        |«      fz  t        j                  ¬«       t5        j6                  d%«       �ŒV t        d&t        ||	|
|fz  t        j                  ¬«       t        d't        |fz  «       y #  Y �ŒxY wc c}w #  |dk  rt5        j6                  d«       Y �Œ«xY w# tT        $ r3}t        d!|d d ›d"|›�t        j                  ¬«       |dz  }Y d }~Œûd }~ww xY w# |j#                  «        w xY w)(Nz
%sz2==================================================rj   z %sz%su   [FAIL] é¦–é¡µä¸ºç©ºé   u)   [INFO] é™�åˆ¶ä¸ºå‰� %d æ�¡ (max_pages=%d)z.SELECT page_url FROM gov_raw WHERE site_name=?r   rt   u'   [INFO] DBå·²æœ‰: %d æ�¡, å¾…æŠ“: %d æ�¡r   r1   rz   rd   re   éÈ   rh   ry   r{   r|   z<title>(.*?)<u-    - è‚‡åº†å¸‚çŽ¯ç§‘æ‰€çŽ¯å¢ƒç§‘æŠ€æœ‰é™�å…¬å�¸z(\d{4}-\d{2}-\d{2})z<[^>]+>F)Úensure_asciizPRAGMA journal_mode=WALr6   ú z™INSERT OR IGNORE INTO gov_raw (page_url, title, site_name, group_name, publish_date, summary, content, attachments, date_rank) VALUES (?,?,?,?,?,?,?,?,?)z[WARN] DB error: ri   é   z
  ...%d/%dg333333Ó?u/   
 %s: æ–°å¢ž%d, è·³è¿‡%d, ç©ºæ­£æ–‡%d, é”™è¯¯%dz[DONE] %s: %d new items)+rq   rr   rs   Ú	SITE_NAMErw   r„   Ú	LIST_PATHr�   Ú_MAX_PGr‡   Úsqlite3Úconnectr   r…   ÚexecuteÚfetchallr†   ÚcloseÚ	enumerateÚrangerl   r[   rm   Ústatus_codern   ro   r�   ÚsleeprD   r“   r   rH   r¥   r—   rG   r®   ÚjsonÚdumpsÚreplaceÚ
GROUP_NAMEÚcommitÚtotal_changesrp   )rˆ   r‰   ÚlimitÚconnÚexistingÚcurÚrowr�   ÚnewÚskipÚemptyÚerrorsÚiÚitemÚretryru   r{   Ú	date_textÚtmÚrawÚsuffixÚdmÚraw_htmlÚtext_lenÚmarkdownrª   Úattachments_jsonÚsummaryrv   s                                rA   ÚrunrÝ   ¡   s=  € Ü	ˆ&�HÑ
¤C§J¡JÕ/Ü	ˆ%”)Ñ
¤#§*¡*Õ-Ü	ˆ$�(Ñ
¤#§*¡*Õ-ä”h¤Ñ*Ó+€DÙÜÐ#¬#¯*©*Õ5Øä˜$Ó€EåÜ˜"‘ˆÜˆu‹:˜ÒÜÐ=ÀÌÐ@PÑPÔWZ×WaÑWaÕbØ˜&˜5�MˆEä�?‰?œ9Ó%€DÜ‹u€HðØ�l‰lÐKÌiÈ\ÓZˆØ—<‘<“>ò 	!ˆCØ�L‰L˜˜Q™Õ ñ	!ð 	‡J�J„LàÖ=�B 2 e¡9°HÒ#<ŠRÐ=€EÐ=Ü	Ð
3´s¸8³}ÄcÈ%ÃjÐ6QÑ
QÔX[×XbÑXbÕcà"#Ð#€CÐ#ˆ$Ð#�˜Ü˜U AÓ&ó ;‰ˆˆ4ØˆÜ˜1“Xò 		"ˆEð"Ü—L‘L  e¡´gÀrÔJ�Ø—=‘= CÒ'Ø!(�A”JØŸ6™6�DÙð (ð		"ñ Ø�a‰KˆFØà�W‘ˆØ˜‘Lˆ	Ü�Y‰YÐ'¨Ó.ˆÙØ—(‘(˜1“+×#Ñ#Ó%ˆCØDˆFØ�|‰|˜FÔ#Ø˜-œC ›K˜<Ð(�ÙØ�Ü�Y‰YÐ-¨tÓ4ˆÙØŸ™ ›ˆIä'¨Ó-ˆÙDL”3”r—v‘v˜j¨"¨hÓ7×=Ñ=Ó?Ô@ÐRSˆØ�bŠ=Ø�Q‰JˆEÙä 0°Ó :Ñˆ�+ÜŸ:™: kÀÔFÐä�‰œyÓ)ˆØ�‰Ð.Ô/ð	Ø˜t �n×,Ñ,¨T°3Ó7×=Ñ=Ó?ˆGØ�L‰Lð  uØ˜u™+ u¬i¼ÀYÐPWÐYaÐcsÐu~ÐôAà�K‰KŒMØ×!Ò!Ø�q‘‘à˜‘	�ð
 �J‰JŒLàˆq‰5�AŠ:Ü�, !¤S¨£Z Ñ0´s·z±zÕBÜ�
‰
�3Žðw;ôz 
Ð
<Ä	È3ÐPTÐV[Ð]cÐ?dÑ
dÔkn×kuÑkuÕvÜ	Ð
#¤y°#Ð&6Ñ
6Õ7øðMÚüò >øð"Ø˜1’9Ü—J‘J˜q”MþôP ò 	Ý°°c°r²
¹AÐ>ÄSÇZÁZÕPØ�a‰K�Fûð	ûð �J‰J�LúsQ   ÄA Q	 ÅQÅ*QÇAQÍA0Q8Ñ	QÑQ5Ñ8	R4Ò)R/Ò*R7Ò/R4Ò4R7Ò7S	Ú__main__)r1   )&Ú__doc__ÚosrD   rr   rÁ   r�   r¸   Úwarningsrl   Úurllib.parser]   Úfilterwarningsr„   r¶   rµ   ÚSITE_DISPLAYrÄ   Úenvironr[   r   r·   r½   ÚargvrÐ   rQ   r‡   r€   Úisdigitrm   r<   rL   rb   rw   r�   r—   r®   rÝ   Ú__name__© rB   rA   ú<module>rê      s>  ðñ÷ 2× 1× 1Ó 1Û Û Ø €× Ñ ˜Ô !à!€Ø€	Ø*€	Ø;€Ø€
Ø�J‰J�N‰N˜;Ð(9Ó:€	à
€Ù�c—h‘hÓò �D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ù�c—h‘h˜q 1™u‘oÓ&ˆÙðð €?‘s˜3Ÿ8™8“} qÒ(¨S¯X©X°a©[×-@Ñ-@Ô-BÙ�#—(‘(˜1‘+Ó€GàWØ Ñ*ñ,€ò*€òó6òòò(ò% òN^8ð@ ˆzÒÙ…Eð rB   