Ë
    V_Š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mZ ddlm	Z	 dZ
dZdZdZd	Zd
ZdddddœZdZddddddddœZdZd„ Zd'd„Zd„ Zd„ Zd„ Zd„ Zdefd „Zed!k(  rxd"ej8                  v Zerd#neZd$ej8                  v rKej8                  j?                  d$«      Z e d%z    e!ej8                  «      k  r e"ej8                  e d%z      «      Z eee¬&«       yy)(u�   
é’Ÿç¥¥å¸‚äººæ°‘æ”¿åºœ - ç”Ÿæ€�çŽ¯å¢ƒ-é€šçŸ¥å…¬å‘Š
http://www.zhongxiang.gov.cn/col/col8822/index.html
TRS/Hanweb CMS - POST AJAX pagination
é    N)ÚBeautifulSoup)Úurljoinz/root/search.dbu"   é’Ÿç¥¥å¸‚-ç”Ÿæ€�çŽ¯å¢ƒé€šçŸ¥å…¬å‘Šu   è�†é—¨z3http://www.zhongxiang.gov.cn/col/col8822/index.htmlé   é   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-LanguageÚRefererz›INSERT OR IGNORE INTO gov_raw 
    (site_name, page_url, title, publish_date, summary, content, category, attachments)
    VALUES (?, ?, ?, ?, '', ?, ?, ?)Ú1Ú33ú/Ú8822Ú346373u   é’Ÿç¥¥å¸‚äººæ°‘æ”¿åºœÚ0)ÚpageÚwebidÚpathÚcolumnidÚunitidÚwebnameÚpermissiontypez;http://www.zhongxiang.gov.cn/module/web/jpage/dataproxy.jspc                  ó|   — dd l } | j                  t        «      }|j                  d«       |j                  d«       |S )Nr   zPRAGMA journal_mode=WALzPRAGMA busy_timeout=5000)Úsqlite3ÚconnectÚDB_PATHÚexecute)r   Úconns     ú)/root/gov_crawler/crawl_zhongxiang_eco.pyÚinit_dbr   #   s2   € ÛØ�?‰?œ7Ó#€DØ‡L�LÐ*Ô+Ø‡L�LÐ+Ô,Ø€Kó    c                 óL   — t        j                  | t        |¬«      }d|_        |S )N)ÚheadersÚtimeoutúutf-8)ÚrequestsÚgetÚHEADERSÚencoding)Úurlr!   Úrs      r   Úfetchr)   +   s    € Ü�‰�S¤'°7Ô;€AØ€A„JØ€Hr   c                 ó   — t        | «      S )u'   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼ˆä¸�è½¬ mdï¼‰)Ústr)ÚtableÚargsÚkwargss      r   Útable_to_markdownr/   1   s   € äˆu‹:Ðr   c                 óà  — t        | d«      }g }t        |j                  «      D �]·  }|j                  €Œ|j                  j	                  «       }|dk(  r(|j                  dd¬«      }|sŒF|j                  |«       ŒX|dk(  r t        |«      }|sŒk|j                  |«       Œ}|dv rÁg }|j                  ddgd¬	«      D ]h  }|j                  dk(  r(|j                  dd¬«      }|sŒ(|j                  |«       Œ:|j                  dk(  sŒJt        |«      }|sŒX|j                  |«       Œj |r|j                  |«       �Œ|j                  dd¬«      }|s�Œ/|j                  |«       �ŒB|d
v r�ŒH|dv rD|j                  dd¬	«      D ],  }	|	j                  dd¬«      }|sŒ|j                  d|z   «       Œ. �Œ�|j                  dd¬«      }|s�Œ§|j                  |«       �Œº dj                  |«      S )Núhtml.parserÚpú T©Ústripr,   )ÚdivÚcenterÚsectionF)Ú	recursive)ÚscriptÚstyleÚmetaÚbr)ÚulÚolÚliz- z

)r   ÚlistÚchildrenÚnameÚlowerÚget_textÚappendr/   Úfind_allÚextendÚjoin)
ÚtextÚsoupÚpartsÚchildÚtnÚtxtÚmdÚ	sub_partsÚsubÚli_tags
             r   Úextract_contentrT   5   sÒ  € Ü˜˜}Ó-€DØ€EÜ�d—m‘mÓ$ó '"ˆØ�:‰:ÐØØ�Z‰Z×ÑÓˆØ�Š9Ø—.‘. ¨D�.Ó1ˆCÚØ—‘˜SÕ!Ø�7Š]Ü" 5Ó)ˆBÚØ—‘˜RÕ ØÐ/Ñ/ØˆIØ—~‘~ s¨G nÀ�~ÓFò -�Ø—8‘8˜s’?ØŸ,™, s°$˜,Ó7�CÚØ!×(Ñ(¨Õ-Ø—X‘X Ó(Ü*¨3Ó/�BÚØ!×(Ñ(¨Õ,ð-ñ Ø—‘˜YÖ'à—n‘n S°�nÓ5�ÛØ—L‘L Ö%ØÐ4Ñ4ÙØ�<ÑØŸ.™.¨¸˜.Ó?ò -�Ø—o‘o c°�oÓ6�ÚØ—L‘L ¨¡Õ,ò-ð
 —.‘. ¨D�.Ó1ˆCÛØ—‘˜SÖ!ðO'"ðP �;‰;�uÓÐr   c                  ó   — 	 t        j                  t        t        t        d¬«      } d| _        | j                  dk7  rt        d| j                  › �d¬«       g S t        j                  d	| j                  t        j                  «      }g }|D ]—  }t        j                  d
|«      }|sŒ|j                  d«      }|j                  d«      j                  «       }t!        d|«      }t        j                  d|«      }	|	r|	j                  d«      nd}
|j#                  |||
dœ«       Œ™ |S # t        $ r}t        d|› �d¬«       g cY d }~S d }~ww xY w)Né   )Údatar    r!   r"   z  [ERROR] Proxy: T©ÚflushéÈ   z  [ERROR] Proxy HTTP z&<record><!\[CDATA\[(.*?)\]\]></record>z,<a\s+[^>]*href="([^"]*)"[^>]*title="([^"]*)"é   é   zhttp://www.zhongxiang.gov.cn/z\[(\d{4}-\d{2}-\d{2})\]Ú )Útitler'   Údate)r#   ÚpostÚ	PROXY_URLÚ
PROXY_DATAr%   r&   Ú	ExceptionÚprintÚstatus_codeÚreÚfindallrJ   ÚDOTALLÚsearchÚgroupr5   r   rF   )r(   ÚeÚrecordsÚitemsÚrecÚa_matchÚhrefr^   Úfull_urlÚdate_mÚdate_strs              r   Úget_all_itemsrt   c   s*  € ðÜ�M‰Mœ)¬*¼gÈrÔRˆØˆŒ
ð 	‡}�}˜ÒÜÐ% a§m¡m _Ð5¸TÕBØˆ	Ü�j‰jÐBÀAÇFÁFÌBÏIÉIÓV€GØ€EØò 	JˆÜ—)‘)ÐKÈSÓQˆÙØØ�}‰}˜QÓˆØ—‘˜aÓ ×&Ñ&Ó(ˆÜÐ:¸DÓAˆÜ—‘Ð5°sÓ;ˆÙ&,�6—<‘< ”?°"ˆØ�‰˜u¨X¸xÑHÕIð	Jð €Løô% ò ÜÐ! ! Ð%¨TÕ2Ø�	ûðús   ‚,D( Ä(	EÄ1EÅEÅEc                 ó8  — 	 t        | «      }|j                  dk7  ry t	        |j
                  d«      }|j
                  }d}|j                  dd	d
i¬«      }|r$|j                  d«      r|d   j                  «       }d}|j                  dd	di¬«      }|r$|j                  d«      r|d   j                  «       }d}	|j                  d«      }
|j                  d«      }|
dkD  r*|dkD  r%|j                  d|
«      }||dz   | }t        |«      }	g }|j                  d«      }|r‹|j                  dd¬«      D ]u  }|d   }t        j                  d|t        j                  «      sŒ.|j                  d¬«      xs |j!                  d«      d   }t#        | |«      }|j%                  ||dœ«       Œw t'        |	j                  «       «      dk  r	d| › d|› d�}	||	||rt)        j*                  |d ¬!«      d"œS dd"œS # t        $ r}t        d| › d|› �d¬«       Y d }~y d }~ww xY w)#Nz
  [ERROR] z: TrX   rZ   r1   r]   r<   rC   ÚArticleTitle)ÚattrsÚcontentÚPubDateÚContentStartÚ
ContentEndr   ú>r[   zdiv.art_conÚa)rp   rp   z"\.(pdf|doc|docx|xls|xlsx|rar|zip)$r4   r   éÿÿÿÿ)rC   r'   é   z<p><a href="z">u!   </a></p>
ï¼ˆæœ¬æ–‡ä¸ºPDFé™„ä»¶ï¼‰F)Úensure_ascii)r^   rx   Úpub_dateÚattachments)r)   rc   rd   re   r   rJ   Úfindr$   r5   rT   Ú
select_onerG   rf   ri   Ú
IGNORECASErE   Úsplitr   rF   ÚlenÚjsonÚdumps)r'   r(   rk   rK   Úhtmlr^   Úmtr�   rP   Úcontent_textÚcsÚceÚafterÚrawÚattachments_listÚart_conÚa_tagÚhÚatÚfus                       r   Úextract_detailr—   |   s/  € ðÜ�#‹Jˆð 	‡}�}˜ÒØÜ˜Ÿ™ Ó/€DØ�6‰6€DØ€EØ	�‰�6 &¨.Ð!9ˆÓ	:€BÙ	ˆb�f‰f�YÔØ�9‘×#Ñ#Ó%ˆØ€HØ	�‰�6 &¨)Ð!4ˆÓ	5€BÙ	ˆb�f‰f�YÔØ�i‘=×&Ñ&Ó(ˆØ€LØ	�‰�>Ó	"€BØ	�‰�<Ó	 €BØ	ˆA‚v�"�q’&Ø—	‘	˜#˜rÓ"ˆØ�5˜1‘9˜RÐ ˆÜ& sÓ+ˆØÐØ�o‰o˜mÓ,€GÙØ×%Ñ% c°Ð%Ó5ò 	AˆEØ�f‘ˆAÜ�y‰yÐ>ÀÄ2Ç=Á=ÕQØ—^‘^¨$�^Ó/ÒC°1·7±7¸3³<ÀÑ3C�Ü˜S !“_�Ø ×'Ñ'°¸BÑ(?Õ@ð	Aô ˆ<×ÑÓÓ  2Ò%Ø% c U¨"¨U¨GÐ3UÐVˆàØØÙK[”t—z‘zÐ"2ÀÔGñ	ð ð bdñ	ð øôC ò Ü�
˜3˜%˜r ! Ð%¨TÕ2Üûðús   ‚G3 Ç3	HÇ<HÈHFc                 ó^  — t        dt        › d|› �d¬«       t        «       }|j                  «       }t	        «       }t        dt        |«      › �d¬«       |st        dd¬«       |j                  «        y|t        z  }|d | }t        dt        |«      › d	|› d
�d¬«       dx}}|D ]Ê  }	|	d   |	d   |	d   }}}
|j                  d|f«       |j                  «       r|dz  }Œ;t        |«      }|€|dz  }ŒN|d   rt        |d   «      t        |
«      kD  r|d   }
|d   }|d   }|j                  t        t        ||
|xs |d   |t        |f«       |dz  }| r|dk\  r nt        j                  d«       ŒÌ |j                  «        |j                  «        t        dt        › d|› d|› �d¬«       |S )Nú[z] Starting, max_pages=TrX   z  Total items from proxy: z  [ERROR] No itemsr   z  Taking first z items (z pages)r^   r'   r_   z)SELECT id FROM gov_raw WHERE page_url = ?r[   rx   r‚   r�   é
   g333333Ó?z] Done. Inserted=z
, Skipped=)rd   Ú	SITE_NAMEr   Úcursorrt   r‡   ÚcloseÚPER_PAGEr   Úfetchoner—   Ú
INSERT_SQLÚCATEGORYÚtimeÚsleepÚcommit)Ú	test_modeÚ	max_pagesr   ÚcurÚ	all_itemsÚ	max_itemsrm   Útotal_insertedÚtotal_skippedÚitemr^   r'   r_   Údetailrx   r‚   s                   r   Úcrawlr®   ¨   sÏ  € Ü	ˆAŒiˆ[Ð.¨y¨kÐ
:À$ÕGÜ‹9€DØ
�+‰+‹-€CÜ“€IÜ	Ð&¤s¨9£~Ð&6Ð
7¸tÕDÙÜÐ"¨$Õ/Ø�
‰
ŒØØœHÑ$€IØ�j�yÐ!€EÜ	ˆOœC ›J˜< x°	¨{¸'Ð
BÈ$ÕOØ%&Ð&€N�]Øò ˆØ ™=¨$¨u©+°t¸F±|�DˆsˆØ�‰Ð?À#ÀÔHØ�<‰<Œ>Ø˜QÑˆMØÜ Ó$ˆØˆ>Ø˜QÑˆMØØ�'Š?œs 6¨'¡?Ó3´c¸%³jÒ@Ø˜7‘OˆEØ˜Ñ#ˆØ˜]Ñ+ˆØ�‰”JÜ�s˜E 4Ò#=¨6°*Ñ+=Ø”X˜{ð!
ô 	ð 	˜!ÑˆÙ˜¨2Ò-ÙÜ�
‰
�3�ð+ð, 	‡K�K„MØ‡J�J„LÜ	ˆAŒiˆ[Ð)¨.Ð)9¸ÀMÀ?Ð
SÐ[_Õ`ØÐr   Ú__main__z--testé   z--max-pagesr[   )r¥   r¦   )rV   )#Ú__doc__rˆ   rf   Úsysr¢   r#   Úbs4r   Úurllib.parser   r   r›   r¡   ÚBASE_URLÚ	MAX_PAGESrž   r%   r    rb   ra   r   r)   r/   rT   rt   r—   r®   Ú__name__Úargvr¥   ÚmpÚindexÚidxr‡   Úint© r   r   ú<module>r¾      s  ðñ÷
 %× $Ó $Ý Ý  à
€Ø0€	Ø€Ø@€Ø€	Ø€ð DØOØ0ØDñ	€ð(€
ð
 ˜$¨¸ØÐ#:Ècñ€
ð J€	òóòò+ò\ò2)ðX  Yó 'ðT ˆzÒØ˜CŸH™HÐ$€IÙ‰˜Y€BØ˜Ÿ™Ñ Ø�h‰h�n‰n˜]Ó+ˆØ�‰7‘S˜Ÿ™“]Ò"Ù�S—X‘X˜c A™gÑ&Ó'ˆBÙ	�I¨Ö,ð r   