Ë
    ëSŠ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	 ddl
mZmZ dZedz   ZdZdZd	d
dedz   dœZd„ Zd„ Zd„ Zedk(  r e«        yy)uØ   
æµŽå�—åœ£æ³‰é›†å›¢è‚¡ä»½æœ‰é™�å…¬å�¸ - ä¿¡æ�¯å…¬å¼€ï¼ˆæ ‡é¢˜å†…åµŒURLï¼‰
CMS: Portal SaaS (DCloud/FastMake)
åˆ—è¡¨: /info_public.html (1é¡µ, 9æ�¡PDF/DOCXé™„ä»¶)
æ­£æ–‡: æ ‡é¢˜å†…åµŒæ–‡ä»¶ä¸‹è½½URL [title](file_url)
é    N)ÚBeautifulSoup)ÚurljoinÚunquotezhttps://www.shengquan.comz/info_public.htmlz/root/search.dbu   shengquan.com-ä¿¡æ�¯å…¬å¼€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ÚRefererc                 ó¤   — t        j                  d| «      }|r$|j                  d«      }|dd › d|dd › d|dd › �S t        j                  d«      S )	uÎ   
    åˆ—è¡¨é¡µæ— å�‘å¸ƒæ—¥æœŸå­—æ®µ, å�‘å¸ƒæ—¥æœŸåœ¨æ–‡ä»¶ URL ä¸­: .../pg2025072113072960956/cms/file/xxx.pdf
    æ��å�– pg å�Ž 8 ä½�æ—¥æœŸ (20250721 â†’ 2025-07-21)ã€‚
    å¤±è´¥å›žé€€å½“å¤©æ—¥æœŸã€‚
    z	pg(\d{8})é   Né   ú-é   é   z%Y-%m-%d)ÚreÚsearchÚgroupÚtimeÚstrftime)Úfile_urlÚmÚraws      ú$/root/gov_crawler/crawl_shengquan.pyÚget_publish_dater       s\   € ô 	�	‰	�, Ó)€AÙØ�g‰g�a‹jˆØ�b�q�'�˜!˜C  !˜H˜: Q s¨1¨Q x jÐ1Ð1Ü�=‰=˜Ó$Ð$ó    c                 ó  — g }t        j                  d| «      D �]m  }|j                  d«      }| j                  d|j	                  «       «      }|dkD  r| |j	                  «       | nd}d}t        j
                  d|«      }|rQ|j                  d«      j                  «       }|j                  dd«      j                  d	d
«      j                  dd«      }d}t        j
                  d|«      }	|	r|	j                  d«      j                  «       }|r|sŒød|v r:d|v r6t        j
                  d|«      }
|
rt        |
j                  d«      «      }n|}n|}|j                  d«      st        t        |«      }|j                  |||dœ«       �Œp |S )u~   
    ç”¨æ­£åˆ™æ��å�–åˆ—è¡¨é¡¹ï¼ˆé�¿å…�BeautifulSoupæˆªæ–­URLä¸­çš„ä¸­æ–‡å­—ç¬¦ï¼‰ã€‚
    è¿”å›ž [{title, url, file_type}]
    z!<li[^>]*data-href="([^"]+)"[^>]*>r	   z</li>r   Ú z<p class="dd2">(.*?)</p>z&amp;ú&z&lt;ú<z&gt;ú>z<p class="dd1">(.*?)</p>z/viewer.htmlzfile=zfile=([^&"]+)Úhttp)ÚtitleÚurlÚ	file_type)r   Úfinditerr   ÚfindÚendr   ÚstripÚreplacer   Ú
startswithr   ÚBASE_URLÚappend)ÚhtmlÚitemsr   Ú	data_hrefÚli_endÚ
li_contentr   Út_mr!   Úf_mÚfmr   s               r   Úextract_items_from_htmlr2   -   st  € ð
 €EÜ�[‰[Ð=¸tÓDó &ˆØ—G‘G˜A“Jˆ	Ø—‘˜7 A§E¡E£GÓ,ˆØ-3°aªZ�T˜!Ÿ%™%›' &Ñ)¸Rˆ
ð ˆÜ�i‰iÐ3°ZÓ@ˆÙØ—I‘I˜a“L×&Ñ&Ó(ˆEØ—M‘M '¨3Ó/×7Ñ7¸ÀÓD×LÑLÈVÐUXÓYˆEð ˆ	Ü�i‰iÐ3°ZÓ@ˆÙØŸ	™	 !›×*Ñ*Ó,ˆIá™IØð ˜YÑ&¨7°iÑ+?Ü—‘Ð+¨YÓ7ˆBÙÜ" 2§8¡8¨A£;Ó/‘à$‘à ˆHà×"Ñ" 6Ô*Üœx¨Ó2ˆHà�‰ØØØ"ñ
ö 	ðE&ðP €Lr   c                  ó¼  — dd l } | j                  d¬«      }|j                  dt        dd¬«       |j	                  «       }t        j                  «       }|j                  j                  t        «       t        dt        › d	�«       |j                  t        d
¬«      }d|_        t        |j                   «      }|st        d«       y t        dt#        |«      › d�«       t%        j&                  t(        «      }d}d}d}	g }
t+        |«      D �]»  \  }}	 |d   }|d   }|d   }t        d|dz   › dt#        |«      › d|› d|d d › d	�	«       d|› d|› d�}t#        |«      dkD  r|d d n|}t-        |«      }|rt        d|› d�«       d|v r|j/                  d«      d   n|}|j1                  d|t        f«      }|j3                  «       }|r{|j1                  d ||||||d   f«       |dz  }|
j5                  d!j7                  |d   |j9                  d"d#«      t        j9                  d"d#«      |j9                  d"d#«      «      «       n…|j1                  d$|||t        |||f«      }|dz  }|j:                  }|
j5                  d%j7                  ||j9                  d"d#«      t        j9                  d"d#«      |j9                  d"d#«      «      «       �Œ¾ |j?                  «        |jA                  «        |
rŽt        d't#        |
«      › d(�«       d)d*jC                  |
«      z   d+z   }	 tE        jF                  d,t(        |gd-d-d.¬/«      }|jH                  r't        d0|jH                  jK                  «       › �«       nt        d1«       t        d3|› d4|› d5|	› d6�«       y # t<        $ r}t        d&|› �«       |	dz  }	Y d }~�Œ§d }~ww xY w# t<        $ r}t        d2|› �«       Y d }~Œ\d }~ww xY w)7Nr   u%   æµŽå�—åœ£æ³‰é›†å›¢-ä¿¡æ�¯å…¬å¼€çˆ¬è™«)Údescriptionz--max-pagesr	   u   æœ€å¤§çˆ¬å�–é¡µæ•°)ÚtypeÚdefaultÚhelpu   çˆ¬å�– z...é   )Útimeoutzutf-8u   æ²¡æœ‰èŽ·å�–åˆ°ä»»ä½•æ�¡ç›®u	   å…±èŽ·å�–u	   ä¸ªæ–‡ä»¶r   r    r!   z  [ú/z] [z] é2   z<p><a href="z">z</a></p>i,  u       å�‘å¸ƒæ—¥æœŸ: z (Last-Modified)éÿÿÿÿz7SELECT id FROM gov_raw WHERE page_url=? AND site_name=?z“
                    UPDATE gov_raw SET title=?, content=?, summary=?, publish_date=?,
                    source_url=? WHERE id=?
                z_INSERT OR REPLACE INTO gov_search(rowid, title, site_name, summary) VALUES ({},'{}','{}','{}');ú'z''zÇ
                    INSERT INTO gov_raw (title, content, summary, site_name,
                    page_url, publish_date, source_url)
                    VALUES (?, ?, ?, ?, ?, ?, ?)
                z^INSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary) VALUES ({},'{}','{}','{}');z	  ERROR: u     å�Œæ­¥FTSç´¢å¼• u    æ�¡...zBEGIN;
ú
z
COMMIT;Úsqlite3Té<   )Úcapture_outputÚtextr9   z  FTS batch error: u     FTSå�Œæ­¥å®Œæˆ�z  FTS batch failed: u   
å®Œæˆ�ï¼�æ–°å¢žu   æ�¡ï¼Œæ›´æ–°u   æ�¡ï¼Œé”™è¯¯u   æ�¡)&ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚrequestsÚSessionÚheadersÚupdateÚHEADERSÚprintÚ	SITE_NAMEÚgetÚLIST_URLÚencodingr2   rB   Úlenr?   ÚconnectÚDB_PATHÚ	enumerater   ÚsplitÚexecuteÚfetchoner)   Úformatr&   Ú	lastrowidÚ	ExceptionÚcommitÚcloseÚjoinÚ
subprocessÚrunÚstderrr%   )rC   ÚparserÚargsÚsessionÚrr+   ÚconnÚinsertedÚupdatedÚerrorsÚfts_sqlsÚidxÚitemr   r   r!   ÚcontentÚsummaryÚpublish_dateÚ
source_urlÚcurÚrowÚcur2ÚridÚeÚ	batch_sqls                             r   Úmainrw   ^   sî  € ÛØ×$Ñ$Ð1XÐ$ÓY€FØ
×Ñ˜¬C¸ÐAUÐÔVØ×ÑÓ€Dä×ÑÓ €GØ‡O�O×Ñœ7Ô#ä	ˆG”I�;˜cÐ
"Ô#à�‰”H bˆÓ)€AØ€A„JÜ# A§F¡FÓ+€EáÜÐ+Ô,Øä	ˆI”c˜%“j�\ Ð
+Ô,ä�?‰?œ7Ó#€DØ€HØ€GØ€FØ€Hä˜uÓ%ó :‰	ˆˆTð9	Ø˜‘MˆEØ˜E‘{ˆHØ˜[Ñ)ˆIÜ�C˜˜A™�w˜a¤ E£
˜|¨3¨y¨k¸¸EÀ#À2¸J¸<ÀsÐKÔLð % X J¨b°°°xÐ@ˆGÜ'*¨7£|°cÒ'9�g˜d˜s‘m¸wˆGÜ+¨HÓ5ˆLÙÜÐ*¨<¨.Ð8HÐIÔJØ47¸8±O˜Ÿ™¨Ó,¨RÒ0ÈˆJð —,‘,ØIØœ9Ð%óˆCð —,‘,“.ˆCáØ—‘ð ð ˜W g¨|¸ZÈÈQÉÐPôRð ˜1‘�Ø—‘ð2ß28±&Ø˜A™ØŸ™ c¨4Ó0Ü!×)Ñ)¨#¨tÓ4ØŸ™¨¨TÓ2ó	3õð —|‘|ð %ð ˜W g¬yØ ¨jð:ó	;�ð ˜A‘�Ø—n‘n�Ø—‘ð2ß28±&ØØŸ™ c¨4Ó0Ü!×)Ñ)¨#¨tÓ4ØŸ™¨¨TÓ2ó	3ôùð]:ðx 	‡K�K„MØ‡J�J„Lñ ÜÐ"¤3 x£= /°Ð9Ô:Ø §¡¨8Ó!4Ñ4°{ÑBˆ	ð	.Ü—‘ 	¬7°IÐ>Ø,0°tÀRôIˆAà�xŠxÜÐ+¨A¯H©H¯N©NÓ,<Ð+=Ð>Õ?äÐ)Ô+ô 
Ð˜h˜Z |°G°9¸LÈÈÐPSÐ
TÕUøô+ ò 	Ü�I˜a˜S�/Ô"Ø�a‰KŽFûð	ûô$ ò 	.ÜÐ(¨¨Ð,×-Ñ-ûð	.ús2   ÄF4NÌAN: Î	N7ÎN2Î2N7Î:	OÏOÏOÚ__main__)Ú__doc__r   ÚsysÚjsonr   r_   r?   rH   Úbs4r   Úurllib.parser   r   r(   rP   rT   rN   rL   r   r2   rw   Ú__name__© r   r   ú<module>r€      s„   ðñó 
Û 
Û Û Û Û Û Ý ß )à&€ØÐ)Ñ)€Ø
€Ø(€	ð DØZØ0ØÐ-Ñ-ñ	€ò
%ò.òbhVðV ˆzÒÙ…Fð r   