Ë
    ¹€Ÿ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mZ dZdZ ej                  dd«      Z
d„ Zd	„ Zed
k(  r e«        yy)uö  
ç�¿éœ–åŒ–å·¥ (www.ruilinhuagong.com) çˆ¬è™« â€” 2026-09-08 ä¿®å¤�
ç»“æž„: é¦–é¡µå�•é¡µè¡¨æ ¼ â†’ æ‰€æœ‰æ�¡ç›®ç›´é“¾PDF
æ­£æ–‡å†…å®¹ä¸ºPDFï¼Œæœ�åŠ¡å™¨è¯¦æƒ…é¡µå±•ç¤ºä¸ºé™„ä»¶é“¾æŽ¥

ä¿®å¤�å†…å®¹:
  - DB ç›®æ ‡æ”¹ä¸º /root/search.db (SEARCH_DB env, ä¸Žå…¶ä½™çˆ¬è™«ä¸€è‡´)
  - åˆ é™¤è‡ªå»ºè¡¨/è‡ªå»º FTS é€»è¾‘ (æ›¾å› é�—ç•™æ—§ schema è¡¨å¯¼è‡´ page_url åˆ—ç¼ºå¤±,
    æ¯�å¤© 38 æ�¡å…¨éƒ¨"å…¥åº“å¤±è´¥"ã€�search.db 0 å¢žé•¿)
  - æŒ‰ä¸»åº“ gov_raw åˆ—æ—�å†™å…¥ + gov_search(rowid,title,site_name,summary)
é    N)Údatetimeu   ç�¿éœ–åŒ–å·¥zhttps://www.ruilinhuagong.comÚ	SEARCH_DBz/root/search.dbc                  ó:  — t        j                  t        › d�d¬«      } d| _        | j                  }d}t        j                  ||t
        j                  «      }g }t        «       }|D ]±  \  }}|j                  «       }|sŒ|j                  «       }|r||v rŒ0|j                  |«       |j                  d«      r|}n	t        |z   }d}	t        j                  d|«      }
|
r%|
j                  d	«      › d
|
j                  d«      › �}	|j                  |||	dœ«       Œ³ |S )u   èŽ·å�–é¦–é¡µæ‰€æœ‰æ�¡ç›®ú/é   )Útimeoutzutf-8zC<td class="host-open-content">.*?<a href="([^"]*)"[^>]*>([^<]+)</a>ÚhttpÚ z/uploadfile/(\d{4})(\d{2})/é   ú-é   )ÚtitleÚpdf_urlÚpublish_date)ÚrequestsÚgetÚBASE_URLÚencodingÚtextÚreÚfindallÚDOTALLÚsetÚstripÚaddÚ
startswithÚsearchÚgroupÚappend)ÚrespÚhtmlÚpatternÚmatchesÚitemsÚseenÚhrefr   r   Úpub_dateÚms              ú(/root/gov_crawler/crawl_ruilinhuagong.pyÚ
fetch_listr*      s  € ä�<‰<œ8˜* A˜°Ô3€DØ€D„MØ�9‰9€DàT€GÜ�j‰j˜ $¬¯	©	Ó2€Gà€EÜ‹5€DØò U‰ˆˆeØ�z‰z‹|ˆÙØØ—‘“ˆÙ˜ ™ØØ�‰�ŒØ�?‰?˜6Ô"Ø‰Gä ‘oˆGàˆÜ�I‰IÐ4°dÓ;ˆÙØŸ'™' !›*˜ Q q§w¡w¨q£z lÐ3ˆHà�‰˜u°È(ÑSÕTð%Uð( €Ló    c                  óâ  — t        «       } t        dt        › d�«       t        dt        | «      › d�«       t	        j
                  t        «      }|j                  d«       |j                  «       }d}d}| D ]Ò  }|d   }|d   }|d	   }|r)t        |«      d
k\  rt        |j                  dd«      «      nd}	d|› d|› d�}
|› d|› �d d }	 |j                  dt        |||||	|
|ddt        j                  j                  t        «      f«       |j                  dkD  r/|j                   }|dz  }	 |j                  d||t        |d d f«       ŒÔ |j'                  «        |j                  dt        f«      j)                  «       d   }|j+                  «        t        d|› d|› d|› �«       y # t        j"                  $ r Y Œtw xY w# t$        $ r$}|dz  }t        d|d d › d|› �«       Y d }~�Œsd }~ww xY w)Nz=== u    çˆ¬è™« ===u   æ‰¾åˆ° u
    æ�¡è®°å½•zPRAGMA busy_timeout=30000r   r   r   r   é   r   r
   uO   <p>è¯¥å…¬ç¤ºå†…å®¹ä¸ºPDFæ–‡ä»¶ï¼Œè¯·ç‚¹å‡»ä¸‹æ–¹é“¾æŽ¥æŸ¥çœ‹ï¼š</p><p><a href="u2   " target="_blank" rel="noopener">æŸ¥çœ‹PDFæ–‡æ¡£: z</a></p>z PDF: i,  z¯INSERT OR IGNORE INTO gov_raw (site_name, title, source_url, page_url, publish_date, date_rank, content, summary, status, category, script_name) VALUES (?,?,?,?,?,?,?,?,?,?,?)Ú	publishedr   zHINSERT INTO gov_search(rowid, title, site_name, summary) VALUES(?,?,?,?)u     å…¥åº“å¤±è´¥: é(   z... z.SELECT COUNT(*) FROM gov_raw WHERE site_name=?u   å…¥åº“: æ–°å¢žu   , å¤±è´¥u   , ç´¯è®¡)r*   ÚprintÚ	SITE_NAMEÚlenÚsqlite3ÚconnectÚDB_PATHÚexecuteÚcursorÚintÚreplaceÚosÚpathÚbasenameÚ__file__ÚrowcountÚ	lastrowidÚIntegrityErrorÚ	ExceptionÚcommitÚfetchoneÚclose)r$   ÚconnÚcurÚ	new_countÚ
fail_countÚitemr   r   ÚpubÚ	date_rankÚcontent_htmlÚsummaryÚridÚeÚ
total_rowss                  r)   ÚmainrQ   ;   s  € Ü‹L€EÜ	ˆD”�˜;Ð
'Ô(Ü	ˆG”C˜“J�<˜zÐ
*Ô+ä�?‰?œ7Ó#€DØ‡L�LÐ,Ô-Ø
�+‰+‹-€CØ€IØ€Jàò :ˆØ�y‘/ˆØ�W‘ˆØ�>Ñ"ˆÙ14¼¸S»ÀQº”C˜Ÿ™ C¨Ó,Ô-ÈAˆ	ð'Ø'. iÐ/aÐbiÐajÐjrðtˆà�G˜6 ' Ð+¨D¨SÐ1ˆð	:Ø�K‰Kð1ô ˜E 7¨G°S¸)Ø˜w¨°R¼¿¹×9IÑ9IÌ(Ó9SðUô	ð �|‰|˜aÒØ—m‘m�Ø˜Q‘�	ðØ—K‘KØbØ˜e¤Y°¸¸°Ð>ôøð-:ð@ 	‡K�K„MØ—‘Ø8¼9¸,óHßHPÉË
ÐSTñV€Jà‡J�J„LÜ	ˆN˜9˜+ X¨j¨\¸À*ÀÐ
NÕOøô ×-Ñ-ò Ùðûäò 	:Ø˜!‰OˆJÜÐ$ U¨3¨B Z L°°Q°CÐ8×9Ò9ûð	:ús7   Ã	A"GÄ,F(Æ(F>Æ;GÆ=F>Æ>GÇ	G.Ç
G)Ç)G.Ú__main__)Ú__doc__r   r   r3   r:   Úsysr   r1   r   Úgetenvr5   r*   rQ   Ú__name__© r+   r)   ú<module>rX      s\   ðñ
ó 
Û Û Û 	Û 
Ý à€	Ø*€Ø
ˆ"�)‰)�KÐ!2Ó
3€òòD/Pðd ˆzÒÙ…Fð r+   