Ë
    Æq«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mZ ddl	m
Z
 dZdZedz   ZdZd	Zd
ZdZdZdZde› de› d�dœZd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u  å…°æºªå¸‚äººæ°‘æ”¿åºœ â€” é€šçŸ¥å…¬å‘Šçˆ¬è™«
URL: http://www.lanxi.gov.cn/col/col1229288169/index.html
CMS: JPAAS/JCMS
åˆ—è¡¨: API /api-gateway/jpaas-publish-server/front/page/build/unit
  å�‚æ•°: webId=3614, pageId=1229288169, tplSetId=O5SnyTEouC5PsGkqGVV0p
  åˆ†é¡µ: paramJson={"pageNo":N,"pageSize":15,"loadEnabled":true,"search":"{}"}
  å…±5776æ�¡/15=386é¡µ
è¯¦æƒ…: /col/{å­�æ �ç›®}/art/{year}/art_{id}.html
  æ ‡é¢˜: meta ArticleTitle
  æ—¥æœŸ: meta PubDate (2026-07-31 15:39)
  æ�¥æº�: meta ContentSource
  æ­£æ–‡: div.main_section
é    N)ÚBeautifulSoup)Úurljoinz/root/search.dbzhttp://www.lanxi.gov.cnú7/api-gateway/jpaas-publish-server/front/page/build/unitu   å…°æºªå¸‚-é€šçŸ¥å…¬å‘Šu   æµ™æ±Ÿzcrawl_lanxi_tzgg.pyÚ
1229288169i‚  é   z[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36z/col/colz/index.html)z
User-AgentÚRefererc                 óv  ‡— | s| S | D �cg c]  }t        |t        «      sŒ|‘Œ }}t        |«      t        | «      k7  r| S t        «       g }}| D ])  }||vsŒ|j	                  |«       |j                  |«       Œ+ |D �‡cg c]&  Št        ‰«      dk\  rt        ˆfd„|D «       «      s‰‘Œ( }}|r|S |S c c}w c c}w )u=  å‰”é™¤ã€Œå®¹å™¨æ®µã€�ï¼šfind_all(['p','div']) ä¼šå�Œæ—¶æ”¶ä¸‹å®¹å™¨ <div> ä¸Žå®ƒå†…éƒ¨çš„ <p>ï¼Œ
    å¯¼è‡´å�Œä¸€å†…å®¹é‡�å¤�ï¼ˆå®¹å™¨é‚£ä»½å¸¸è¿˜è¢« get_text(strip=True) æ‹�å¹³ï¼‰ã€‚
    åˆ¤æ�®ï¼šæŸ�æ®µè¢«åˆ—è¡¨å†…å�¦ä¸€æ®µå®Œå…¨åŒ…å�« â†’ å®ƒæ˜¯å®¹å™¨æ®µ â†’ å‰”é™¤ã€‚ä¿�æŠ¤ï¼šå‰”é™¤å�Žä¸ºç©ºåˆ™åŽŸæ ·è¿”å›žã€‚
    é(   c              3   ó:   •K  — | ]  }|‰uxr |xr |‰v –— Œ y ­w©N© )Ú.0ÚbÚas     €ú%/root/gov_crawler/crawl_lanxi_tzgg.pyú	<genexpr>z(_drop_container_parts.<locals>.<genexpr>5   s&   øè ø€ Ò(SÈ¨°!¨Ò)D¸Ò)D¸aÀ1¸fÓ)DÑ(Sùs   ƒ)Ú
isinstanceÚstrÚlenÚsetÚaddÚappendÚany)ÚpartsÚpÚpsÚseenÚuniqr   Úkeeps        ` r   Ú_drop_container_partsr    #   sÇ   ø€ ñ
 ØˆØÖ	1�œj¨¬CÕ0Š!Ð	1€BÐ	1Ü
ˆ2ƒw”#�e“*ÒØˆô “˜ˆ$€DØò (ˆØ�DŠ=Ø�H‰H�QŒK˜Ÿ™ Q�ð(ð ÷ V�!Ü˜“F˜b’L¤SÓ(SÈdÔ(SÔ%Sò ð V€Dð Váˆ4Ð!˜TÐ!ùò 
2ùòVs   ŠB1 B1Á>+B6c                 ó<   — t        | t        j                  d¬«       y )NT)ÚfileÚflush)ÚprintÚsysÚstderr)Úmsgs    r   Úlogr(   9   s   € Ü	ˆ#”C—J‘J dÖ+ó    c           	      ó¤  — t        j                  | t        dddœd¬«      }dt        ddd	d
d|dœ}	 t	        j
                  t        |t        d¬«      }d|_        |j                  «       }|j                  di «      j                  dd«      }t        |d«      }g }|j                  d«      D ]ú  }	|	j                  d«      }
|	j                  dd¬«      }|
r|sŒ,|
j                  dd«      j                  «       }|r|dk(  rŒT|j                  d«      st!        t"        |«      }|
j%                  d¬«      }t'        j(                  d d|«      j                  «       }|j%                  d¬«      }t'        j*                  d!|«      }|sŒ×|j-                  |||j/                  d"«      d#œ«       Œü |S # t        $ r}t        d| › d|› �«       g cY d}~S d}~ww xY w)$u/   APIåˆ†é¡µæŠ“åˆ—è¡¨, è¿”å›ž [{title, url, date}]Tz{})ÚpageNoÚpageSizeÚloadEnabledÚsearchF)Úensure_asciiÚ3614ÚbulidstaticÚcolumnu   æ–°é—»åˆ—è¡¨ÚO5SnyTEouC5PsGkqGVV0pr   )ÚwebIdÚpageIdÚ	parseTypeÚpageTypeÚtagIdÚtplSetIdÚunitUrlÚ	paramJsoné   )ÚparamsÚheadersÚtimeoutúutf-8ÚdataÚhtmlÚ u     [WARN] ç¬¬u   é¡µè¯·æ±‚å¤±è´¥: Núhtml.parserÚlir   Údivz	list-date©Úclass_Úhrefú#Úhttp©Ústripu   ^(?:&middot;|Â·|&nbsp;|\s)+ú(20\d{2}-\d{2}-\d{2})é   )ÚtitleÚurlÚdate)ÚjsonÚdumpsÚPER_PAGEÚPAGE_IDÚrequestsÚgetÚAPI_URLÚHEADERSÚencodingÚ	Exceptionr(   r   Úfind_allÚfindrM   Ú
startswithr   ÚBASEÚget_textÚreÚsubr.   r   Úgroup)ÚpgÚ
param_jsonr=   ÚrrA   rB   ÚeÚsoupÚitemsrE   r   Údate_divrI   rP   rR   Údms                   r   Ú
crawl_listrm   =   sÀ  € ä—‘Ø¤(¸4È4ñàô€Jð ÜØ"ØØØ+ØLØñ	€FðÜ�L‰Lœ¨¼È"ÔMˆØˆŒ
Ø�v‰v‹xˆØ�x‰x˜ Ó#×'Ñ'¨°Ó3ˆô ˜˜}Ó-€DØ€EØ�m‰m˜DÓ!ò IˆØ�G‰G�C‹LˆØ—7‘7˜5¨�7Ó5ˆÙ™ØØ�u‰u�V˜RÓ ×&Ñ&Ó(ˆÙ�t˜s’{ØØ�‰˜vÔ&Üœ4 Ó&ˆDØ—
‘
 �
Ó&ˆä—‘Ð5°r¸5ÓA×GÑGÓIˆØ× Ñ  tÐ Ó,ˆÜ�Y‰YÐ/°Ó6ˆÙØØ�‰˜u¨T¸2¿8¹8ÀA»;ÑGÕHð#Ið$ €Løô/ ò Üˆl˜2˜$Ð/°¨sÐ3Ô4Ø�	ûðús   ±AF) Æ)	GÆ2G
ÇGÇ
Gc                 ó$	  ‡‡— 	 t        j                  | t        d¬«      }d|_        |j                  }t        |d«      }d	}|j                  d
ddi¬«      }|r$|j                  d«      r|d   j                  «       }|s'|j                  dd¬«      }|r|j                  d¬«      }d	}|j                  d
ddi¬«      }	|	r=|	j                  d«      r,t        j                  d|	d   «      }
|
r|
j                  d«      }d	}|j                  d«      }|s|j                  dd¬«      }|�r@g }t        «       Š|j!                  dd¬«      D ]Ž  }|d   }t        j                  d|t        j"                  «      sŒ.|j%                  d«      st'        t(        |«      }|j                  d¬«      xs d}|‰vsŒj‰j+                  |«       |j-                  ||d œ«       Œ� g }|j!                  g d!¢d¬"«      D �]Ÿ  }|j.                  d#k7  r|j1                  d#«      rŒ%|j.                  dk(  r|j                  d$«      d%v rŒH|j1                  dd&¬«      rŒ\|j1                  d'¬«      s$|j                  d(«      rd'|j                  d(«      v rŒ“|j.                  d)k(  r+d*„ Št3        ˆˆfd+„|j!                  dg«      D «       «      }|rŒÍt5        |«      j                  «       }|sŒé|j.                  d)k(  rA|j                  d#«      r�Œ|j                  d)d,¬"«      }|rt5        |«      j                  «       }|j.                  dk(  r7|j1                  d«      r&|j                  d)d#g«      s|j-                  |«       �Œ|j.                  d-v s�Œ�|j-                  |«       �Œ¢ t7        |«      }d.j9                  |«      j                  «       }g }|j;                  d.«      D ]Q  }|j                  «       }|sŒt        j<                  d/d	|«      j                  «       sŒ<||vsŒA|j-                  |«       ŒS d.j9                  |«      j                  «       }|r$d0j9                  d1„ |D «       «      }|r|d.z   |z   n|}|||fS # t
        $ r}t        d| › d|› �«       Y d}~yd}~ww xY w)2u   è¿”å›ž (title, date, content)r<   )r>   r?   r@   u     [WARN] è¯¦æƒ…å¤±è´¥ z: N)NNNrD   rC   ÚmetaÚnameÚArticleTitle)ÚattrsÚcontentrF   Ú
main_titlerG   TrL   ÚPubDaterN   rO   zdiv.main_sectionÚzoom)Úidr   )rI   rI   z*\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|txt)$rK   u   é™„ä»¶)rp   rQ   )r   rF   Útable)Ú	recursiverx   rw   )ÚxgwdPÚqrcoderz   ÚfilelinkÚclassr   c                 ó’   — d}| j                   dk(  r| j                  dd«      }|r!|j                  d«      st        t        |«      }|S )NrC   r   rI   rK   )rp   rX   r_   r   r`   )ÚelÚus     r   Ú_att_urlz extract_detail.<locals>._att_url¥   sA   € Ø�AØ—w‘w #’~ØŸF™F 6¨2Ó.˜Ù §¡¨fÔ!5Ü#¤D¨!Ó,˜Ø�Hr)   c              3   óB   •K  — | ]  } ‰|«      r ‰|«      ‰v –— Œ y ­wr   r   )r   r   r�   Úseen_atts     €€r   r   z!extract_detail.<locals>.<genexpr>¬   s*   øè ø€ ò Dà±h¸r´lñ ˜R“L HÔ,ñDùs   ƒF)r   rx   z

ú<[^>]+>ú
c              3   ó:   K  — | ]  }d |d   › d|d   › d�–— Œ y­w)z<p><a href="rQ   z">rp   z</a></p>Nr   )r   Úatts     r   r   z!extract_detail.<locals>.<genexpr>Î   s(   è ø€ Ò!lÐY\ L°°U±°¸B¸sÀ6¹{¸mÈ8Ô"TÑ!lùs   ‚)rW   rX   rZ   r[   Útextr\   r(   r   r^   rM   ra   rb   r.   rd   Ú
select_oner   r]   ÚIr_   r   r`   r   r   rp   Úfind_parentr   r   r    ÚjoinÚsplitrc   )rQ   rg   rB   rh   ri   rP   ÚmtÚmhrR   ÚmdÚmrs   ÚdcÚattachmentsr   rI   rp   r   ÚnodeÚhas_attÚhtml_strÚinner_pÚ
uniq_partsÚpartÚpart_strippedÚ	att_linksr�   rƒ   s                             @@r   Úextract_detailrœ   k   sD  ù€ ð Ü�L‰L˜¤g°rÔ:ˆØˆŒ
Ø�v‰vˆô ˜˜}Ó-€Dà€EØ	�‰�6 &¨.Ð!9ˆÓ	:€BÙ	ˆb�f‰f�YÔØ�9‘×#Ñ#Ó%ˆÙØ�Y‰Y�u \ˆYÓ2ˆÙØ—K‘K d�KÓ+ˆEà€DØ	�‰�6 &¨)Ð!4ˆÓ	5€BÙ	ˆb�f‰f�YÔÜ�I‰IÐ.°°9±Ó>ˆÙØ—7‘7˜1“:ˆDà€GØ	�‰Ð+Ó	,€BÙØ�Y‰Y�u ˆYÓ(ˆÚ	àˆÜ“5ˆØ—‘˜S t�Ó,ò 	DˆAØ�V‘9ˆDÜ�y‰yÐFÈÌbÏdÉdÕSØ—‘ vÔ.Ü"¤4¨Ó.�DØ—z‘z¨�zÓ-Ò9°�Ø˜xÒ'Ø—L‘L Ô&Ø×&Ñ&°¸TÑ'BÕCð	Dð ˆØ—K‘KÒ 5À�KÓFó &	'ˆDà�y‰y˜GÒ#¨×(8Ñ(8¸Ô(AØØ�y‰y˜EÒ! d§h¡h¨t£nÐ8KÑ&KØØ×Ñ ¨'ÐÔ2ØØ×Ñ zÐÔ2°t·x±xÀÔ7HÈZÐ[_×[cÑ[cÐdkÓ[lÑMlØà�y‰y˜CÒòô ô Dà"Ÿm™m¨S¨EÓ2ôDó D�ñ ØÜ˜4“y—‘Ó(ˆHÙØà�y‰y˜CÒà—9‘9˜WÔ%ÙØŸ)™) C°5˜)Ó9�ÙÜ" 7›|×1Ñ1Ó3�HØ�y‰y˜EÒ! d×&6Ñ&6°uÔ&=ÀdÇiÁiÐQTÐV]ÐP^ÔF_Ø—‘˜XÖ&Ø—‘˜nÓ,Ø—‘˜XÖ&ðM&	'ôN & eÓ,ˆØ—+‘+˜eÓ$×*Ñ*Ó,ˆàˆ
Ø—M‘M &Ó)ò 	1ˆDØ ŸJ™J›LˆMÙ ØÜ—6‘6˜* b¨-Ó8×>Ñ>Ô@ØØ JÒ.Ø×!Ñ! -Õ0ð	1ð —+‘+˜jÓ)×/Ñ/Ó1ˆÙØŸ	™	Ñ!lÐ`kÔ!lÓlˆIÙ6=�g Ñ&¨Ò2À9ˆGØ�$˜ÐÐøô ò  ÜÐ$ S E¨¨A¨3Ð/Ô0Üûð ús   „/Q+ Ñ+	RÑ4R
Ò
Rc                  ó8  — dd l } | j                  «       }|j                  dt        d¬«       |j	                  «       }t        dt        |j                  t        «      «      }t        j                  t        d¬«      }|j                  d«       |j                  «       }|j                  d«       |j                  d	«       dx}x}}t        «       }	t        d|dz   «      D �]þ  }
t!        d
|
› d�«       t#        |
«      }|st!        d«        �nÔt!        dt%        |«      › d�«       |D �]³  }|d   |	v rŒ|	j'                  |d   «       |j                  d|d   f«       |j)                  «       r|dz  }ŒLt!        d|d   › d|d   d d › �«       t+        |d   «      \  }}}|s|d   }|s|d   }|r1t%        t-        j.                  dd|«      j1                  «       «      dk  r"t!        d|rt%        |«      nd› d�«       |dz  }ŒÛt-        j.                  dd|«      d d }t-        j.                  dd|«      j1                  «       }t-        j2                  d|«      rdnd}	 |j                  d||||d   |d   |t4        t6        t8        |df«      }|j:                  }|j                  d ||t4        |f«       |j=                  «        |dz  }tA        jB                  d!«       �Œ¶ �Œ tE        d"|› d#|› d$|› d%||z   |z   › �«       y # t        j>                  $ r |dz  }Y ŒSw xY w)&Nr   z--pagesrO   )ÚtypeÚdefaultr   )r?   zPRAGMA busy_timeout=10000a¬  CREATE TABLE IF NOT EXISTS gov_raw (id INTEGER PRIMARY KEY, site_name TEXT, source_url TEXT, page_url TEXT, title TEXT, publish_date TEXT, date_rank INTEGER DEFAULT 0, summary TEXT, status TEXT, category TEXT DEFAULT '', visits INTEGER DEFAULT 0, content TEXT DEFAULT '', tags TEXT DEFAULT '', industry TEXT DEFAULT 'other', attachments TEXT DEFAULT '', group_name TEXT, has_table INTEGER DEFAULT 0, script_name TEXT DEFAULT '')zgCREATE VIRTUAL TABLE IF NOT EXISTS gov_search USING fts5(title, site_name, summary, tokenize='trigram')u   --- ç¬¬u   é¡µ ---u   åˆ—è¡¨ä¸ºç©º, å�œæ­¢ç¿»é¡µu   æ‰¾åˆ°u   æ�¡rQ   z'SELECT id FROM gov_raw WHERE page_url=?z  [rR   z] rP   é-   r„   rC   é
   u       æ­£æ–‡è¿‡çŸ­(u	   ), è·³è¿‡éÈ   z\s+ú z<tablezªINSERT INTO gov_raw (title, summary, content, page_url, source_url, publish_date, site_name, script_name, group_name, has_table, date_rank) VALUES (?,?,?,?,?,?,?,?,?,?,?)zJINSERT INTO gov_search (rowid, title, site_name, summary) VALUES (?,?,?,?)g333333Ó?u	   
æ–°å¢ž: u
     é‡�å¤�: u
     è¿‡çŸ­: u
     æ€»è®¡: )#ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚmaxÚminÚpagesÚ	MAX_PAGESÚsqlite3ÚconnectÚDBÚexecuteÚcursorr   Úranger(   rm   r   r   Úfetchonerœ   rb   rc   rM   r.   ÚSITEÚSCRIPTÚGROUPÚ	lastrowidÚcommitÚIntegrityErrorÚtimeÚsleepr$   )r¤   ÚapÚargsr«   ÚconnÚcÚ	total_newÚ	total_dupÚ
total_skipr   re   rj   ÚitemrP   rR   rs   ÚsummaryÚ	has_tableÚcurÚrids                       r   ÚmainrÈ   Ó   s  € ÛØ	×	 Ñ	 Ó	"€BØ‡O�O�I¤C°€OÔ3Ø�=‰=‹?€DÜ�”3�t—z‘z¤9Ó-Ó.€Eä�?‰?œ2 rÔ*€DØ‡L�LÐ,Ô-Ø�‰‹€AØ‡I�Ið  }ô  ~Ø‡I�IÐwÔxà)*Ð*€IÐ*�	˜JÜ‹5€DÜ�A�u˜q‘yÓ!ó 'ˆÜˆg�b�T˜Ð!Ô"Ü˜2“ˆÙÜÐ,Ô-ÚÜˆf”S˜“Z�L Ð$Ô%Øó  	ˆDØ�E‰{˜dÑ"ØØ�H‰H�T˜%‘[Ô!Ø�I‰IÐ?À$ÀuÁ+ÀÔPØ�z‰zŒ|Ø˜Q‘�	ØÜ�#�d˜6‘l�^ 2 d¨7¡m°C°RÐ&8Ð%9Ð:Ô;Ü#1°$°u±+Ó#>Ñ ˆE�4˜ÙØ˜W™�ÙØ˜F‘|�Ùœc¤"§&¡&¨°R¸Ó"A×"GÑ"GÓ"IÓJÈRÒOÜÐ'¹¬¨G¬ÀQÐ'GÀyÐQÔRØ˜a‘�
ØÜ—f‘f˜Z¨¨WÓ5°d°sÐ;ˆGÜ—f‘f˜V S¨'Ó2×8Ñ8Ó:ˆGÜŸY™Y y°'Ô:™ÀˆIð
Ø—i‘ið AØ˜G W¨d°5©k¸4À¹;ÈÌdÔTZÔ\aÐclÐnoÐpór�ð —m‘m�Ø—	‘	ÐfØ ¤t¨WÐ5ô7à—‘”Ø˜Q‘�	ô �J‰J�sŽOòA 	ð'ôP 
ˆJ�y�k ¨I¨;°jÀÀÈJÐW`ÐajÑWjÐkuÑWuÐVvÐ
wÕxøô ×)Ñ)ò Ø˜Q‘’	ðús   ÉA*K>Ë>LÌLÚ__main__)Ú__doc__rW   r­   rb   r%   rº   rS   Úbs4r   Úurllib.parser   r¯   r`   rY   r´   r¶   rµ   rV   r¬   rU   rZ   r    r(   rm   rœ   rÈ   Ú__name__r   r)   r   ú<module>rÎ      sš   ðñ÷ .× -× -Ý Ý  à€Ø €Ø
ÐJÑ
J€Ø€Ø€Ø	€Ø
€Ø€	Ø€àoØ��x ˜y¨Ð4ñ€ò"ò,,ò+ò\e òP7yðt ˆzÒÙ…Fð r)   