Ë
    ¸¬ujH  ã                   óv  — 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	 e
e	j                  «      dkD  r2e	j                  d   j                  «       r ee	j                  d   «      ndZe� ed ee«      z   «       dZdZeez   ZdZd	Zd
dddœZdZd!d„Zd„ Zd„ Zd"d„Zd„ Zedk(  rŽdZ ej>                  ed¬«       dej                  v xs dej                  v Z  ede›de ›d�«        ee ¬«      Z!e!r7ejD                  jG                  ed«      Z$ ee!e$«        ed e
e!«      z  «       y ed «       yy)#uï   


æ½œæ±Ÿå¸‚äººæ°‘æ”¿åºœ (hbqj.gov.cn) - å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»·å…¬ç¤ºçˆ¬è™«
ç«™ç‚¹ï¼šhttps://www.hbqj.gov.cn/xxgk/xxgkml/szfxxgkml/gysyjs/hjbh/jsxmhjyxpjgs/
CMS: TRS
åˆ—è¡¨ï¼šindex.html + index_{n}.html åˆ†é¡µ(25é¡µÃ—18æ�¡=450æ�¡)
é    N)ÚBeautifulSoupé   z[AutoPg] max_pages=zhttps://www.hbqj.gov.cnz0/xxgk/xxgkml/szfxxgkml/gysyjs/hjbh/jsxmhjyxpjgs/u:   æ½œæ±Ÿå¸‚äººæ°‘æ”¿åºœ-å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»·å…¬ç¤ºu	   æ½œæ±Ÿå¸‚zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zJtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languageé   c                 ó`   — t        j                  | t        d¬«      }||_        |j                  S )Né   )ÚheadersÚtimeout)ÚrequestsÚgetÚHEADERSÚencodingÚtext)Úurlr   Úrs      ú#/root/gov_crawler/crawl_hbqj_eia.pyÚfetchr   %   s$   € Ü�‰�S¤'°2Ô6€AØ€A„JØ�6‰6€Mó    c                 ó¬  — g }t        | d«      }|j                  dt        j                  d«      ¬«      D ]œ  }|j	                  dd«      }|j                  d«      s'|j                  d«      r
t        |z   }nt        dz   |z   }|j	                  d	d«      }|s|j                  d
¬«      }|rt        |«      dk  rŒ„|dv rŒ‰|j                  ||dœ«       Œž |S )u   è§£æž�åˆ—è¡¨é¡µúhtml.parserÚazt\d+_\d+\.html©Úhrefr   Ú Úhttpú/ÚtitleT©Ústripé   )u   å¸‚åœºå‡†å…¥è´Ÿé�¢æ¸…å�•u   é¦–é¡µu	   ä¸Šä¸€é¡µu	   ä¸‹ä¸€é¡µu   æœ«é¡µu   å°¾é¡µ)r   Úlink)
r   Úfind_allÚreÚcompiler   Ú
startswithÚBASE_URLÚget_textÚlenÚappend)ÚhtmlÚitemsÚsoupÚa_tagr   r   s         r   Úextract_list_itemsr.   *   sÕ   € à€EÜ˜˜}Ó-€Dð —‘˜s¬¯©Ð4EÓ)F�ÓGò 5ˆØ�y‰y˜ Ó$ˆØ�‰˜vÔ&Ø�‰˜sÔ#Ü $‘‘ä #‘~¨Ñ,�ð —	‘	˜' 2Ó&ˆÙØ—N‘N¨�NÓ.ˆEÙœ˜E›
 QšØð ÐhÑhØà�‰˜u¨dÑ3Õ4ð'5ð* €Lr   c                 ó¬  — t        | d«      }d}|j                  dddi¬«      }|r$|j                  d«      r|d   j                  «       }|sN|j                  d«      }|r;|j	                  d	¬
«      }t        j                  dd|«      j                  «       }|r|}d}|j                  dddi¬«      }|r=|j                  d«      r,t        j                  d|d   «      }	|	r|	j                  d«      }d}
|j                  dd„ ¬«      }|rt        |«      }
|
sSdD ]N  }|j                  d|fd„¬«      D ]/  }|j	                  d	¬
«      }t        |«      dkD  sŒ$t        |«      }
 n |
sŒN n g }|j                  dt        j                  dt
        j                  «      ¬«      D ]Ÿ  }|j                  dd«      }|j                  d«      r
t        |z   }n4|j                  d«      rd|z   }n|j                  d«      st        dz   |z   }|j	                  d	¬
«      xs |j!                  d«      d   }|j#                  ||dœ«       Œ¡ |||
j                  «       |dœS ) u   è§£æž�è¯¦æƒ…é¡µr   r   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentr   Tr   u   [_\s]*æ½œæ±Ÿå¸‚äººæ°‘æ”¿åºœ\s*$ÚPubDatez(\d{4}[-/]\d{1,2}[-/]\d{1,2})r   Údivc                 ó   — | xr d| v S )NÚTRS_UEDITOR© )Úcs    r   ú<lambda>z extract_detail.<locals>.<lambda>d   s   € °AÒ4L¸-È1Ð:L€ r   )Úclass_)ÚviewÚdetailÚxxgk_articleÚcon_textc                 ó   — | xr || v S )Nr9   )r:   Úcvs     r   r;   z extract_detail.<locals>.<lambda>k   s   € ÈÊÈrÐUVÈw€ r   éd   r   z"\.(pdf|doc|docx|xls|xlsx|zip|rar)$r   r   r   z//zhttps:r   éÿÿÿÿ)r   r1   )r   Údater4   Úattachments)r   Úfindr   r   r'   r#   ÚsubÚsearchÚgroupÚstrr"   r(   r$   ÚIr%   r&   Úsplitr)   )r*   r   r,   r   Ú
meta_titleÚ	title_tagÚtÚdate_strÚ	meta_dateÚ
date_matchr4   Úcontent_divÚcls_valr6   r   rF   r-   r   r1   s                      r   Úextract_detailrV   G   sQ  € ä˜˜}Ó-€Dð €EØ—‘˜6¨&°.Ð)A�ÓB€JÙ�j—n‘n YÔ/Ø˜9Ñ%×+Ñ+Ó-ˆáØ—I‘I˜gÓ&ˆ	ÙØ×"Ñ"¨Ð"Ó.ˆAä—‘Ð9¸2¸qÓA×GÑGÓIˆAÙØ�ð €HØ—	‘	˜&¨°Ð(;�	Ó<€IÙ�Y—]‘] 9Ô-Ü—Y‘YÐ?ÀÈ9ÑAUÓVˆ
ÙØ!×'Ñ'¨Ó*ˆHð €GØ—)‘)˜EÑ*L�)ÓM€KÙÜ�kÓ"ˆáàEò 	ˆGØ—}‘} UÀÒ3V�}ÓWò �Ø—|‘|¨$�|Ó/�Ü�t“9˜s“?Ü! #›h�GÙð	ò
 Ùð	ð €KØ—‘˜s¬¯©Ð4YÔ[]×[_Ñ[_Ó)`�Óaò 
8ˆØ�y‰y˜ Ó$ˆØ�?‰?˜3ÔÜ˜d‘?‰DØ�_‰_˜TÔ"Ø˜d‘?‰DØ—‘ Ô(Ü˜c‘> DÑ(ˆDà�~‰~ Dˆ~Ó)Ò@¨T¯Z©Z¸«_¸RÑ-@ˆØ×Ñ 4°Ñ6Õ7ð
8ð ØØ—=‘=“?Ø"ñ	ð r   c                 ó  — | rdg}n2t        t        dt        t        t        xs t        «      dz   «      «      }g }|D ]ù  }|dk(  rt
        }nt        t        z   d|z  z   }t        d|t        fz  «       t        |«      }t        |«      }|st        d«        |S t        dt        |«      z  «       |D ]‚  }t        d|d   dd	 z  «       	 t        |d
   «      }t        ||d
   «      }	|	d   xs |d   |d
   |	d   |	d   |	d   t        t        dœ}
|j                  |
«       t!        j"                  d«       Œ„ Œû |S # t$        $ r?}t        d|z  «       |j                  |d   |d
   ddg t        t        dœ«       Y d}~ŒÌd}~ww xY w)u   çˆ¬å�–å…¨éƒ¨æ–‡ç« r   zindex_%d.htmlz  Fetching list page %d/%d...z    No more items, stoppingz    Found %d itemsz  Fetching: %sr   Né2   r!   rE   r4   rF   )r   r!   rE   r4   rF   Ú	site_namerJ   g333333Ó?z    ERROR: %sr   )ÚlistÚrangeÚminÚTOTAL_PAGESÚ_MAX_PGÚLIST_URLr&   Ú	LIST_PATHÚprintr   r.   r(   rV   Ú	SITE_NAMEÚGROUPr)   ÚtimeÚsleepÚ	Exception)ÚincrementalÚ
page_rangeÚresultsÚpage_numr   r*   r+   ÚitemÚdetail_htmlr>   ÚresultÚes               r   Ú	crawl_allro   ˆ   s®  € áØ�S‰
äœ% ¤3¤{´GÒ4J¼{Ó#KÈAÑ#MÓNÓOˆ
à€Gàò +ˆØ�qŠ=Ü‰CäœYÑ&¨¸8Ñ)CÑCˆCäÐ-°¼;Ð0GÑGÔHÜ�S‹zˆÜ" 4Ó(ˆáÜÐ/Ô0ØðB €Nô? 	Ð"¤S¨£ZÑ/Ô0àò 	ˆDÜÐ" T¨'¡]°3°BÐ%7Ñ7Ô8ðÜ# D¨¡LÓ1�Ü'¨°T¸&±\ÓB�ð $ G™_Ò=°°W±Ø  ™LØ" 6™NØ% iÑ0Ø#)¨-Ñ#8Ü!*Ü"ñ�ð —‘˜vÔ&Ü—
‘
˜3•ñ!	ð!+ðZ €Nøô ò 
Ü�o¨Ñ)Ô*Ø—‘Ø! '™]Ø  ™LØØ!Ø#%Ü!*Ü"ñ ÷ ñ ûð
ús   Ã
A+D;Ä;	FÅ5E>Å>Fc                 óÞ   — t        |dd¬«      5 }| D ]+  }|j                  t        j                  |d¬«      dz   «       Œ- 	 d d d «       t	        dt        | «      |fz  «       y # 1 sw Y   Œ#xY w)NÚwúutf-8)r   F)Úensure_asciiú
zExported %d records to %s)ÚopenÚwriteÚjsonÚdumpsra   r(   )ri   Úoutput_pathÚfr   s       r   Úexport_jsonlr{   À   si   € Ü	ˆk˜3¨Ô	1ð >°QØò 	>ˆAØ�G‰G”D—J‘J˜q¨uÔ5¸Ñ<Õ=ñ	>÷>ô 
Ð
%¬¨W«°{Ð(CÑ
CÕD÷>ð >ús   �1A#Á#A,Ú__main__z/root/gov_crawler/outputT)Úexist_okz--incrementalÚ1z	Crawling z (incremental=ú))rg   zhbqj_eia.jsonlz
Done! %d articles totalzNo results found!)rr   )F)%Ú__doc__r   r#   rw   rd   ÚosÚsysÚbs4r   Ú_SYSr(   ÚargvÚisdigitÚintr^   ra   rK   r&   r`   r_   rb   rc   r   r]   r   r.   rV   ro   r{   Ú__name__Ú
output_dirÚmakedirsrg   ri   ÚpathÚjoinÚ
jsonl_pathr9   r   r   ú<module>rŽ      sZ  ðñó Û 	Û Û Û 	Û 
Ý ã Ù" 4§9¡9›~°Ò1°d·i±iÀ±l×6JÑ6JÔ6L‰#ˆd�i‰i˜‰lÔ
ÐRV€Ø
ÐÙ	Ð
¡# g£,Ñ
.Ô/à$€Ø>€	Ø�iÑ€ØH€	Ø€ð DØZØ0ñ€ð €óò
ò:?óB6òpEð ˆzÒØ+€JØ€B‡K�K�
 TÕ*à! S§X¡XÐ-Ò@°¸¿¹°€Kâ	ªI²{Ð
CÔDÙ KÔ0€GáØ—W‘W—\‘\ *Ð.>Ó?ˆ
Ù�W˜jÔ)ÙÐ)©C°«LÑ8Õ9áÐ!Õ"ð r   