Ë
    ¸¬uj=  ã                   ó.  — 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	m	Z	m
Z
 dZedz   ZdZdZd	Zd
ZdZdZddddœZ ej(                  dd«      Z e	j,                  «        e
d¬«      z
  j/                  d«      Z ej2                  «       Zej6                  j9                  e«       de_        ddlZ ej>                  ej@                  jB                  «       d#d„Z"d„ Z#d„ Z$d„ Z%efd„Z&e'dk(  r£eZ( e)ejT                  «      dkD  rFejT                  d   jW                  d«      r( e,ejT                  d   j[                  d«      d   «      Z(n< e)ejT                  «      d kD  r'ejT                  d   d!k(  r e,ejT                  d    «      Z( e&e(¬"«       yy)$u„  åŒ—æµ·ç»�æµŽå¼€å�‘åŒº â€” é€šçŸ¥å…¬å‘Š (col118450)
http://www.sdbh.gov.cn/col/col118450/index.html?uid=699737&pageNum=0
TRS jPage AJAX: /module/web/jpage/dataproxy.jsp
Total: 511 records Ã— 15/page = 35 pages
Page 1 data embedded in HTML <script type="text/xml"><datastore>
Pages 2+ via POST to dataproxy.jsp with session cookies
Detail: div.bg-article.bfr_article_content or div.content
é    N)ÚBeautifulSoup)ÚdatetimeÚ	timedeltazhttp://www.sdbh.gov.cnz./col/col118450/index.html?uid=699737&pageNum=0u"   åŒ—æµ·ç»�æµŽå¼€å�‘åŒº-é€šçŸ¥å…¬å‘Šu   ä¼�ä¸šu   æ”¿åºœå…¬å‘Šzcrawl_sdbh_notice.pyé   é   z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/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Ú	SEARCH_DBz/root/search.dbiG  )Údaysz%Y-%m-%dFc                 óR  — t        d«      D ]o  }	 |rt        j                  | |d¬«      }nt        j                  | d¬«      }d|_        |j
                  dk(  r|j                  c S 	 t        j                  d
«       Œq y # t        $ r}t        d| d d › d	|› �«       Y d }~Œ:d }~ww xY w)Né   r   )ÚdataÚtimeout)r   zutf-8éÈ   z[WARN] é<   z	 failed: é   )ÚrangeÚsessionÚpostÚgetÚencodingÚstatus_codeÚtextÚ	ExceptionÚprintÚtimeÚsleep)ÚurlÚ	post_dataÚiÚrÚes        ú&/root/gov_crawler/crawl_sdbh_notice.pyÚfetchr#   (   s¦   € Ü�1‹Xò ˆð		4ÙÜ—L‘L ¨9¸b�LÓA‘ä—K‘K ¨R�KÓ0�Ø ˆAŒJØ�}‰} Ò#Ø—v‘v’ð $ô 	�
‰
�1�ðð øô ò 	4Ü�G˜C  ˜H˜: Y¨q¨cÐ2×3Ñ3ûð	4ús   �AA?Á?	B&ÂB!Â!B&c                 óŽ  — g }t        j                  d| t         j                  «      }|s|S |j                  d«      }t        j                  d|t         j                  «      }|D ]^  \  }}}|j                  d«      s	t        |z   }|j                  |j                  «       |j                  «       |j                  «       f«       Œ` |S )z;Extract items from embedded XML dataStore in the first pagez><div id="699737">.*?<script[^>]*type="text/xml">(.*?)</script>é   úF<a href="([^"]*)"[^>]*title="([^"]*)"[^>]*>.*?</a><span>([^<]*)</span>Úhttp)	ÚreÚsearchÚDOTALLÚgroupÚfindallÚ
startswithÚBASE_URLÚappendÚstrip)ÚhtmlÚitemsÚmÚxml_dataÚrecordsÚhrefÚtitleÚdates           r"   Úparse_list_xmlr9   8   s¬   € à€EÜ
�	‰	ÐSÐUYÔ[]×[dÑ[dÓe€AÙØˆà�w‰w�q‹z€Hä�j‰jØQØ”"—)‘)ó€Gð %ò BÑˆˆe�TØ�‰˜vÔ&Ü˜d‘?ˆDØ�‰�e—k‘k“m T§Z¡Z£\°4·:±:³<Ð@ÕAðBð €Ló    c                 ó  — g }t        j                  d| t         j                  «      }|D ]^  \  }}}|j                  d«      s	t        |z   }|j                  |j                  «       |j                  «       |j                  «       f«       Œ` |S )z&Parse AJAX response from dataproxy.jspr&   r'   )r(   r,   r*   r-   r.   r/   r0   )r1   r2   r5   r6   r7   r8   s         r"   Úparse_list_ajaxr<   L   s|   € à€EÜ�j‰jØQØŒb�i‰ió€Gð %ò BÑˆˆe�TØ�‰˜vÔ&Ü˜d‘?ˆDØ�‰�e—k‘k“m T§Z¡Z£\°4·:±:³<Ð@ÕAðBð €Lr:   c                 ó  — t        | «      }|syt        |d«      }d}|j                  d«      }|r|j                  d¬«      }|s;|j                  ddd	i¬
«      }|r$|j	                  d«      r|d   j                  «       }|s7|j                  d«      }|r$|j                  d¬«      j                  d«      d   }d}t        j                  d|«      }|r!|j                  d«      j                  dd«      }|sT|j                  dddi¬
«      }|r=|j	                  d«      r,t        j                  d|d   «      }|r|j                  d«      }d}|j                  dd„ ¬«      }	|	s|j                  dd¬«      }	|	r�t        |	«      }t        j                  dd|t        j                  ¬«      }t        j                  dd|t        j                  ¬«      }t        j                  dd|t        j                  ¬«      }|j                  «       }|||fS )zParse detail page)Ú r>   r>   zhtml.parserr>   Úh1T)r0   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentr7   ú r   u2   å�‘å¸ƒæ—¥æœŸ[ï¼š:]\s*(\d{4}[-/]\d{1,2}[-/]\d{1,2})r%   ú/ú-ÚPubDatez(\d{4}-\d{2}-\d{2})Údivc                 ó,   — | r| xr dt        | «      v S dS )NrD   F)Ústr)Úcs    r"   ú<lambda>zparse_detail.<locals>.<lambda>~   s   € É!¨QÒ-F°9ÄÀAÃÐ3F€ ÐQV€ r:   )Úclass_z
bg-articlez<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>z0<div[^>]*class="[^"]*bshare[^"]*"[^>]*>.*?</div>)r#   r   ÚfindÚget_textr   r0   Úsplitr(   r)   r+   ÚreplacerK   Úsubr*   )
r   r1   Úsoupr7   r?   r@   r3   Údate_strrD   Úbodys
             r"   Úparse_detailrX   Z   sÖ  € ä�‹:€DÙØä˜˜}Ó-€Dð €EØ	�‰�4‹€BÙ	Ø—‘ $�Ó'ˆÙØ�y‰y˜¨°Ð'?ˆyÓ@ˆÙ�D—H‘H˜YÔ'Ø˜‘O×)Ñ)Ó+ˆEÙØ�I‰I�gÓˆÙØ—J‘J T�JÓ*×0Ñ0°Ó5°aÑ8ˆEð €HÜ
�	‰	ÐGÈÓN€AÙØ—7‘7˜1“:×%Ñ% c¨3Ó/ˆÙØ�y‰y˜¨°	Ð':ˆyÓ;ˆÙ�D—H‘H˜YÔ'Ü—	‘	Ð0°$°y±/ÓBˆAÙØŸ7™7 1›:�ð €GØ�9‰9�UÑ#Vˆ9ÓW€DÙØ�y‰y˜ |ˆyÓ4ˆÙÜ�d“)ˆä—&‘&Ð5°r¸7Ì"Ï)É)ÔTˆÜ—&‘&Ð3°R¸ÌÏ	É	ÔRˆä—&‘&ÐLÈbÐRYÔac×ajÑajÔkˆØ—-‘-“/ˆà�(˜GÐ#Ð#r:   c                 ó  — t        j                  t        «      }|j                  «       }t	        dt
        › d�«       t        t        «      }|st	        d«       y d}d}t        d| dz   «      D �]Ç  }|dk(  rt        |«      }n‰|dz
  t        z  dz   }|t        z  }	t        |«      t        |	«      t        t        «      dt        › d�dd	d
dddœ
}
t        t        › d�|
¬«      }|rd|v rt	        dt
        › d|› d�«        �n8t        |«      }|st	        dt
        › d|› �«       Œ¶t	        dt
        › d|› dt        |«      › d�«       |D ]Ö  \  }}}|j                  d|f«      j!                  «       }|r|dz  }Œ0t#        |«      \  }}}|s|}|s|}|rt        |j%                  «       «      dk  rd}	 |j                  d||||t&        |t(        t*        f«       |j-                  «        |dz  }t	        dt
        › d|› d|d d › d|› d�	«       t3        j4                  d«       ŒØ t3        j4                  d«       �ŒÊ |j7                  «        t	        dt
        › d |› d!|› �«       |S # t.        $ r}|j1                  «        |dz  }Y d }~Œ|d }~ww xY w)"Nú[z] Loading first page...z[ERROR] Cannot load list pager   r%   Ú457rF   Ú118450Ú699737Ú0Ú1)
ÚstartrecordÚ	endrecordÚperpageÚwebidÚpathÚcolumnidÚunitidÚpermissiontypeÚcolÚsourceContentTypez/module/web/jpage/dataproxy.jsp)r   Úcsrfz] No AJAX data for page z
, stoppingz] No items on page z] Page z: z itemsz)SELECT id FROM gov_raw WHERE page_url = ?é2   u   æ­£æ–‡ä¸ºç©ºzÃ
                    INSERT INTO gov_raw (source_url, page_url, title, publish_date, site_name, content, group_name, industry)
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?)
                z] +é(   z (ú)g      à?z
[z] Done. New: z, Skipped: )Úsqlite3Úconnectr	   Úcursorr   ÚSCRIPT_NAMEr#   ÚLIST_URLr   r9   ÚPER_PAGErK   r.   r<   ÚlenÚexecuteÚfetchonerX   r0   Ú	SITE_NAMEÚGROUPÚINDUSTRYÚcommitr   Úrollbackr   r   Úclose)ÚpagesÚconnrp   r1   Ú	all_countÚ
skip_countÚpager2   Ústart_recordÚ
end_recordr   Ú	ajax_htmlr7   Úitem_urlrV   ÚexistingÚdetail_titleÚdetail_daterD   r!   s                       r"   Úcrawlr‰   �   s²  € Ü�?‰?œ9Ó%€DØ�[‰[‹]€Fô 
ˆAŒkˆ]Ð1Ð
2Ô3Ü”‹?€DÙÜÐ-Ô.Øà€IØ€Jä�a˜ ™Ó#ó >ˆØ�1Š9ä" 4Ó(‰Eð ! 1™H¬Ñ0°1Ñ4ˆLØ¤™ˆJä" <Ó0Ü  ›_Üœx›=ØÜ#˜* A˜Ø$Ø"Ø"%ØØ%(ñˆIô ¤ 
Ð*IÐJÐV_Ô`ˆIÙ ¨)Ñ 3Ü˜œ+˜Ð&>¸t¸fÀJÐOÔPÚÜ# IÓ.ˆEáÜ�A”k�]Ð"5°d°VÐ<Ô=Øä�”+�˜g d V¨2¬c°%«j¨\¸Ð@ÔAà).ò 	Ñ%ˆE�8˜XØ—~‘~Ø;¸h¸[óç‰h‹jð ñ Ø˜a‘�
Øä1=¸hÓ1GÑ.ˆL˜+ wÙØ$�ÙØ&�Ùœc '§-¡-£/Ó2°RÒ7Ø(�ð
 Ø—‘ð  ð  ¨,¸ÄYÐPWÔY^Ô`hÐiôkð —‘”Ø˜Q‘�	Ü˜œ+˜ c¨)¨°B°|ÀCÀRÐ7HÐ6IÈÈKÈ=ÐXYÐZÔ[ô
 �J‰J�s�Oð9	ô< 	�
‰
�3Žð}>ð@ 	‡J�J„LÜ	ˆC”ˆ}˜M¨)¨°KÀ
¸|Ð
LÔMØÐøô ò  Ø—‘”Ø˜a‘•
ûð ús   Æ/AI"É"	J
É+JÊJ
Ú__main__r%   z--pages=ú=r   z--pages)r}   )N).Ú__doc__Úrequestsr(   ÚsysÚosr   rn   Úbs4r   r   r   r.   rr   rw   rx   ry   rq   Ú	MAX_PAGESrs   ÚHEADERSÚgetenvr	   ÚnowÚstrftimeÚCUTOFFÚSessionr   ÚheadersÚupdateÚverifyÚurllib3Údisable_warningsÚ
exceptionsÚInsecureRequestWarningr#   r9   r<   rX   r‰   Ú__name__r}   rt   Úargvr-   ÚintrR   © r:   r"   ú<module>r£      s�  ðñ÷ ,× +× +Ý ß (à#€ØÐFÑF€Ø0€	Ø€Ø€Ø$€Ø€	Ø€ð QØOØ0ñ€ð
 ˆB�I‰I�kÐ#4Ó5€	Ø
ˆ(�,‰,‹.™9¨%Ô0Ñ
0×	:Ñ	:¸:Ó	F€à
ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ Ø€„ã Ø €× Ñ ˜×+Ñ+×BÑBÔ Cóò ò(ò0$ðf ó Pðf ˆzÒØ€EÙ
ˆ3�8‰8ƒ}�qÒ˜SŸX™X a™[×3Ñ3°JÔ?Ù�C—H‘H˜Q‘K×%Ñ% cÓ*¨1Ñ-Ó.‰Ù	ˆS�X‰X‹˜Ò	˜sŸx™x¨™{¨iÒ7Ù�C—H‘H˜Q‘KÓ ˆÙ	�Öð r:   