Ë
    'ˆ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Zddlm	Z	  ej                  dd«      ZdZdZdZed	z   Zd
ZdZdZddddddddœZeedœZddddœZd„ Zd„ Zd„ Zd„ Zedk(  rddlZ ej8                  «         e«        yy)u“  Crawler for ç™½é“¶åŒºäººæ°‘æ”¿åºœ - å…¬ç¤ºå…¬å‘Š (baiyinqu.gov.cn xwzx/GSGG)
   JPAAS API: /api-gateway/jpaas-publish-server/front/page/build/unit
   åˆ—è¡¨: tagId=åˆ†é¡µ pageId=9139131b15e244b48c146e567381178d, 20æ�¡/é¡µ, paramJson pageNo/pageSize
   è¯¦æƒ…: /xwzx/GSGG/art/YYYY/art_xxx.html é�™æ€�HTML, æ­£æ–‡ div[class*=content] / .article
   2026-08-21 é‡�å»ºï¼ˆåŽŸè„šæœ¬æ®‹ç¼º crawl() æœªå®šä¹‰ï¼‰
é    N)ÚurljoinÚ	SEARCH_DBz/root/search.dbu   ç™½é“¶åŒºäººæ°‘æ”¿åºœzcrawl_baiyinqu.pyzhttps://www.baiyinqu.gov.cnz7/api-gateway/jpaas-publish-server/front/page/build/unitz0https://www.baiyinqu.gov.cn/xwzx/GSGG/index.htmlzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36z
2023-08-18ÚbulidstaticÚ 1953af59ba95408c9ebfffd5af1eea96Ú e7f893abbbd14083b0cdc69bfdf92239Úcolumnu   åˆ†é¡µÚnullÚ 9139131b15e244b48c146e567381178d)Ú	parseTypeÚwebIdÚtplSetIdÚpageTypeÚtagIdÚeditTypeÚpageId)z
User-AgentÚReferer)ÚnewÚskipÚerrc                 ó¸  — t        t        «      }t        j                  | ddœ«      |d<   	 t	        j
                  t        |t        dd¬«      }|j                  «       }t        |j                  d«      t         «      r$|j                  di «      j                  dd	«      }|S d	}|S # t        $ r+}t        d
| › d|› �t        j                  ¬«       Y d }~y d }~ww xY w)Né   )ÚpageNoÚpageSizeÚ	paramJson©é   r   F)ÚparamsÚheadersÚtimeoutÚverifyÚdataÚhtmlÚ u     åˆ—è¡¨APIé”™è¯¯(é¡µz): ©Úfile)ÚdictÚ
API_PARAMSÚjsonÚdumpsÚrequestsÚgetÚAPI_URLÚHEADERSÚ
isinstanceÚ	ExceptionÚprintÚsysÚstderr)Úpager   ÚrÚdr"   Úes         ú#/root/gov_crawler/crawl_baiyinqu.pyÚ
fetch_listr8   "   s»   € Ü”*Ó€FÜŸ*™*°À"Ñ%EÓF€Fˆ;ÑðÜ�L‰Lœ¨¼È'ÐZ_Ô`ˆØ�F‰F‹HˆÜ4>¸q¿u¹uÀV»}ÌdÔ4Sˆq�u‰u�V˜RÓ ×$Ñ$ V¨RÓ0ˆØˆð Z\ˆØˆøÜò ÜÐ% d V¨3¨q¨cÐ2¼¿¹ÕDÜûðús   ¬A4B% Â!B% Â%	CÂ.!CÃCc                 óL  — g }t        «       }t        j                  d| «      D ]~  }|j                  d«      |j                  d«      |j                  d«      j	                  «       }}}t        t        |«      }||v rŒY|j                  |«       |j                  |||dœ«       Œ€ |S )NzZ<i>\s*(\d{4}-\d{2}-\d{2})\s*</i>\s*<a[^>]*href="([^"]*art[^"]*\.html)"[^>]*title="([^"]*)"é   é   é   )ÚurlÚtitleÚdate)	ÚsetÚreÚfinditerÚgroupÚstripr   ÚBASE_URLÚaddÚappend)r"   ÚitemsÚseenÚmr?   Úhrefr>   r=   s           r7   Úextract_list_itemsrL   /   s•   € Ø€EÜ‹5€Dä�[‰[ÐvÐx|Ó}ò AˆØŸG™G A›J¨¯©°«
°A·G±G¸A³J×4DÑ4DÓ4F�EˆdˆÜ”h Ó%ˆØ�$‰;ØØ�‰�ŒØ�‰˜S¨5¸$Ñ?Õ@ðAð €Ló    c                 ó¨  — ddddœ}t        j                  d| t         j                  «      }|r"|j                  d«      j	                  «       |d<   dD ]Ñ  }t        j                  || t         j                  «      }|sŒ+|j                  d«      }t        j
                  dd|t         j                  ¬«      }t        j
                  d	d|t         j                  ¬«      }t        t        j
                  d
d|«      j	                  «       «      }|dk\  sŒ¾|j	                  «       |d<    n t        j                  d| «      }|r|j                  d«      |d<   |S )Nr#   )r>   Úcontentr?   z<title[^>]*>(.*?)</title>r:   r>   )z7<div[^>]*class="[^"]*content-txt[^"]*"[^>]*>(.*?)</div>z3<div[^>]*class="[^"]*article[^"]*"[^>]*>(.*?)</div>z0<div[^>]*class="[^"]*zoom[^"]*"[^>]*>(.*?)</div>z#<div[^>]*id="zoom"[^>]*>(.*?)</div>z3<div[^>]*class="[^"]*content[^"]*"[^>]*>(.*?)</div>z6<div[^>]*class="[^"]*TRS_Editor[^"]*"[^>]*>(.*?)</div>z8<div[^>]*class="[^"]*news-content[^"]*"[^>]*>(.*?)</div>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>ú<[^>]+>é2   rO   z(20\d{2}-\d{2}-\d{2})r?   )rA   ÚsearchÚDOTALLrC   rD   ÚsubÚlen)r"   ÚresultrJ   ÚpatternÚinnerÚtext_lens         r7   Úextract_detailr[   =   s  € Ø b°"Ñ5€FÜ
�	‰	Ð.°´b·i±iÓ@€AÙØŸ'™' !›*×*Ñ*Ó,ˆˆw‰ðQò ˆô �I‰I�g˜t¤R§Y¡YÓ/ˆÚØ—G‘G˜A“JˆEÜ—F‘FÐ7¸¸UÌ"Ï)É)ÔTˆEÜ—F‘FÐ5°r¸5ÌÏ	É	ÔRˆEÜœ2Ÿ6™6 *¨b°%Ó8×>Ñ>Ó@ÓAˆHØ˜2‹~Ø$)§K¡K£M��yÑ!Ùðô" 	�	‰	Ð*¨DÓ1€AÙØŸ™ ›ˆˆv‰Ø€MrM   c                  ó2  — d} t        t        j                  «      D ]y  \  }}|dk(  r?|dz   t        t        j                  «      k  r t	        t        j                  |dz      «      } ŒJ|j                  d«      sŒ\t	        |j                  dd«      d   «      } Œ{ t        dd¬«       t        j                  t        d	¬
«      }|j                  «       }t        j                  «       }t        d| dz   «      D �]Þ  }t        |«      }|rd|vrt        d|› d�«        �n»t        |«      }|st        d|› d�«        �nœt        d|› dt        |«      › d�d¬«       |D �]a  }	|	d   }
|j!                  d|
f«       |j#                  «       rt$        dxx   dz  cc<   Œ>	 t'        j(                  |
t*        dd¬«      }|j,                  dk7  rt$        dxx   dz  cc<   Œ}t/        |j0                  «      }|d   xs |	d   }|st$        dxx   dz  cc<   Œ²|d   xs	 d|
› d|› d�}|d   xs	 |	d   xs d}	 |j!                  d t4        t6        |
|||t9        j:                  d!d"|«      d d d#d$d%|d"d"d&d'd(|v rdnd%t<        f«       |j>                  d%kD  rt$        d)xx   dz  cc<   nt$        dxx   dz  cc<   |jA                  «        �Œd t        jD                  d«       �Œá |jG                  «        t        d,t$        d)   › d-t$        d   › d.t$        d   › d/t        j                  «       |z
  d0›d1�	d¬«       y # t2        $ r}t$        dxx   dz  cc<   Y d }~�Œód }~ww xY w# t2        $ r:}t        d*|› �t        jB                  ¬+«       t$        dxx   dz  cc<   Y d }~�Œ9d }~ww xY w)2Nr<   z--pagesr:   z--pages=ú=u   === ç™½é“¶åŒºå…¬ç¤ºå…¬å‘Š ===T)Úflushé   )r   Úartu     é¡µu    æ— å†…å®¹ï¼Œå�œæ­¢u    æ— æ�¡ç›®ï¼Œå�œæ­¢z: u    æ�¡r=   z'SELECT id FROM gov_raw WHERE page_url=?r   r   F)r   r   r    éÈ   r   r>   rO   z<p><a href="z">z</a></p>r?   z
1900-01-01aZ  
                    INSERT OR IGNORE INTO gov_raw
                    (site_name, source_url, page_url, title, publish_date, date_rank, summary, status,
                     category, visits, content, tags, industry, attachments, group_name, has_table, script_name)
                    VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
                rQ   r#   Ú	publishedu   å…¬ç¤ºå…¬å‘Šr   z[]u   ç”˜è‚ƒz<tabler   u     DBé”™è¯¯: r$   u   å®Œæˆ�: æ–°å¢žu    è·³è¿‡u    é”™è¯¯u    ç”¨æ—¶z.0fÚs)$Ú	enumerater1   ÚargvrV   ÚintÚ
startswithÚsplitr0   Úsqlite3ÚconnectÚDBÚcursorÚtimeÚranger8   rL   ÚexecuteÚfetchoneÚstatsr*   r+   r-   Ústatus_coder[   Útextr/   Ú	SITE_NAMEÚLIST_URLrA   rU   ÚSCRIPT_NAMEÚrowcountÚcommitr2   ÚsleepÚclose)Ú	max_pagesÚiÚaÚconnÚcurÚt0r3   r"   rH   Úitemr=   r4   Údetr6   r>   rO   r?   s                    r7   Úmainrƒ   Z   sa  € Ø€IÜœ#Ÿ(™(Ó#ò 0‰ˆˆ1Ø�	Š>˜a !™e¤c¬#¯(©(£mÒ3ÜœCŸH™H Q¨¡U™OÓ,‰IØ�\‰\˜*Õ%Ü˜AŸG™G C¨›O¨AÑ.Ó/‰Ið	0ô
 
Ð)°$Õ7ä�?‰?œ2 rÔ*€DØ
�+‰+‹-€CÜ	�‰‹€Bä�a˜ Q™Ó'ó 3ˆÜ˜$ÓˆÙ�u DÑ(Ü�E˜$˜Ð2Ð3Ô4ÚÜ" 4Ó(ˆÙÜ�E˜$˜Ð2Ð3Ô4ÚÜ��d�V˜2œc %›j˜\¨Ð.°dÕ;Øó (	"ˆDØ�u‘+ˆCØ�K‰KÐAÀCÀ6ÔJØ�|‰|Œ~Ü�f“ Ñ"“ØðÜ—L‘L ¬g¸wÈuÔU�Ø—=‘= CÒ'Ü˜%“L AÑ%“LØÜ$ Q§V¡VÓ,�ð ˜‘LÒ1 D¨¡MˆEÙÜ�e“ Ñ!“ØØ˜)‘nÒM¨,°s°e¸2¸e¸WÀHÐ(MˆGØ�v‘;Ò> $ v¡,Ò>°,ˆDð"Ø—‘ð ô œx¨¨e°T¸4Ü—F‘F˜: r¨7Ó3°D°SÐ9Ø °°G¸RÀÀTØ 8¨wÑ#6™a¸A¼{ð	ô
ð —<‘< !Ò#Ü˜%“L AÑ%”Lä˜&“M QÑ&“MØ—‘–ðK(	"ôR 	�
‰
�1Žðg3ðj 	‡J�J„LÜ	ˆNœ5 ™<˜.¨´°f±¨¸gÄeÈEÁlÀ^ÐSZÔ[_×[dÑ[dÓ[fÐgiÑ[iÐjmÐZnÐnoÐ
pÐx|Ö}øôA ò Ü�e“ Ñ!“Ýûðûô4 ò "Ü˜ Q CÐ(¬s¯z©zÕ:Ü�e“ Ñ!—‘ûð"ús7   Æ=L+ÇL+È+BMÌ+	MÌ4MÍMÍ	NÍ/NÎNÚ__main__)Ú__doc__r*   rA   ri   r(   Úosr1   rm   Úurllib.parser   Úgetenvrk   rt   rv   rE   r,   ru   ÚUAÚCUTOFFr'   r-   rq   r8   rL   r[   rƒ   Ú__name__Úurllib3Údisable_warnings© rM   r7   ú<module>r�      sÉ   ðñ÷ 2× 1× 1Ó 1Ý  à€R‡Y�Yˆ{Ð-Ó.€Ø#€	Ø!€Ø(€Ø
ÐNÑ
N€Ø=€Øv€Ø	€ð Ø/Ø2ØØØØ0ñ€
ð ¨Ñ
1€à˜1 QÑ'€ò
òòò:C~ðL ˆzÒÛØ€G×ÑÔÙ…Fð rM   