Ë
    ÉP€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	dZ
dZdZd	d
iZdad„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uM  
crawl_lylgkfq_gsgg.py - ä¸´æ²‚ä¸´æ¸¯ç»�æµŽå¼€å�‘åŒº-å…¬ç¤ºå…¬å‘Š
CMS: VSB9 (Visual SiteBuilder 9)
åˆ—è¡¨: /xw/gsgg.htm (page 1) â†’ /xw/gsgg/{N}.htm (N>=2)
      div.list > a[href] + [YYYY-MM-DD] æ—¥æœŸ
è¯¦æƒ…: /info/2254/NNNNN.htm
æ ‡é¢˜: <title>æ ‡ç­¾ (åŽ»é™¤ç«™ç‚¹å��å�Žç¼€)
æ—¥æœŸ: <meta PubDate>
æ­£æ–‡: div.v_news_content > p
é    N)ÚBeautifulSoupz/root/search.dbzhttp://www.lylgkfq.gov.cnu   ä¸´æ²‚ä¸´æ¸¯-å…¬ç¤ºå…¬å‘Šu   å±±ä¸œõ   çŽ¯å¢ƒå…¬ç¤ºz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36c                 ó  — t         €7t        j                  «       a t         j                  j	                  t
        «       	 t         j                  | d¬«      }d|_        |j                  S # t        $ r}t        d|› �«       Y d }~y d }~ww xY w)Né<   ©Útimeoutzutf-8zERR:)ÚSESSIONÚrequestsÚSessionÚheadersÚupdateÚHEADERSÚgetÚencodingÚtextÚ	ExceptionÚprint)ÚurlÚrÚes      ú'/root/gov_crawler/crawl_lylgkfq_gsgg.pyr   r   "   so   € ä€Ü×"Ñ"Ó$ˆÜ�‰×ÑœwÔ'ðÜ�K‰K˜ RˆKÓ(ˆØˆŒ
Ø�v‰vˆøÜò Ü��Q�CˆjÔÜûðús   ¿)A) Á)	B
Á2BÂB
c                 ób   — | dk(  rt         › d�}t        |«      S t         › d| › d�}t        |«      S )Né   z/xw/gsgg.htmz	/xw/gsgg/z.htm)ÚBASE_URLr   )Úpage_nor   s     r   Úfetch_list_pager   0   s=   € Ø�!‚|Ü�
˜,Ð'ˆô ˆs‹8€Oô �
˜) G 9¨DÐ1ˆÜˆs‹8€Oó    c                 óp  — g }t        | d«      }|j                  dd¬«      }|s|S |j                  dd¬«      D �]y  }|j                  dd	«      j	                  «       }|rd
|vrŒ+|j                  d¬«      }|sŒ@|j                  d«      rt        › d|dd › �}n|j                  d«      r
t        › |› �}|j                  r|j                  n|}|r|j                  «       nd	}d	}	t        j                  t        j                  |«      › d�|«      }
|
r|
j                  d«      }	|	s)t        j                  d|«      }
|
r|
j                  d«      }	|	sO|j                  «       }t        j                  t        j                  |«      › d�|«      }
|
r|
j                  d«      }	|j                  |||	f«       �Œ| |S )z)Extract (url, title, date) from list pageúhtml.parserÚdivÚlist©Úclass_ÚaT)Úhrefr%   Ú z/info/2254/©Ústripz../ú/é   Nz\s*\[(\d{4}-\d{2}-\d{2})\]r   z\[(\d{4}-\d{2}-\d{2})\]z.*?\[(\d{4}-\d{2}-\d{2})\])r   ÚfindÚfind_allr   r(   Úget_textÚ
startswithr   ÚparentÚreÚsearchÚescapeÚgroupÚappend)ÚhtmlÚitemsÚsoupÚlist_divr$   r%   Útitler/   Úparent_textÚdate_strÚ
date_matchÚbodys               r   Ú
parse_listr>   8   s²  € à€EÜ˜˜}Ó-€Dð �y‰y˜ vˆyÓ.€HÙØˆà×Ñ˜s¨ÐÓ.ó $.ˆØ�u‰u�V˜RÓ ×&Ñ&Ó(ˆÙ�}¨DÑ0ØØ—
‘
 �
Ó&ˆÙØð �?‰?˜5Ô!Ü�Z˜q  a b  
Ð+‰DØ�_‰_˜SÔ!Ü�Z ˜vÐ&ˆDð ŸXšX�—’¨1ˆÙ+1�f—o‘oÔ'°rˆð ˆä—Y‘Y¤2§9¡9¨UÓ#3Ð"4Ð4TÐUÐWbÓcˆ
ÙØ!×'Ñ'¨Ó*ˆHÙäŸ™Ð#=¸{ÓKˆJÙØ%×+Ñ+¨AÓ.�áØ×$Ñ$Ó&ˆDÜŸ™¤r§y¡y°Ó'7Ð&8Ð8XÐ#YÐ[_Ó`ˆJÙØ%×+Ñ+¨AÓ.�à�‰�d˜E 8Ð,Ö-ðI$.ðL €Lr   c                 óx
  — t        | d«      }d}|j                  d«      }|r9|j                  d¬«      }t        j                  dd|«      }|j                  «       }d}|j                  ddd	i«      }|r;|j                  d
d«      }t        j                  d|«      }	|	r|	j                  d«      }d}|j                  dd¬«      }
|
s|j                  dd¬«      }
|
s|j                  dd¬«      }
|
�r$g }t        «       }|
j                  d«      D ]"  }|j                  |j                  d«      «       Œ$ |
j                  d«      D �]ô  }||v rŒ	t        t        |«      d«      j                  xs t        t        |«      d«      }|j                  d«      D ]˜  }|j                  dd«      j                  «       }|sŒ&|j                  d«      rd|z   }nG|j                  d«      r
t        |z   }n,|j                  d«      st        dz   |j!                  d«      z   }|j#                  dd«      |d<   Œš |j                  d«      D ]˜  }|j                  dd«      j                  «       }|sŒ&|j                  d«      rd|z   }nG|j                  d«      r
t        |z   }n,|j                  d«      st        dz   |j!                  d«      z   }|j#                  dd«      |d<   Œš t        j                  ddt        |«      «      }t        j                  d d|«      j                  «       }|sd!|vr�Œä|j%                  |«       �Œ÷ |
j                  d«      D �]�  }t        t        |«      d«      }|j                  d«      D ]˜  }|j                  dd«      j                  «       }|sŒ&|j                  d«      rd|z   }nG|j                  d«      r
t        |z   }n,|j                  d«      st        dz   |j!                  d«      z   }|j#                  dd«      |d<   Œš |j                  d«      D ]˜  }|j                  dd«      j                  «       }|sŒ&|j                  d«      rd|z   }nG|j                  d«      r
t        |z   }n,|j                  d«      st        dz   |j!                  d«      z   }|j#                  dd«      |d<   Œš t        |«      }|s�Œ€|j%                  |«       �Œ“ |rd"j'                  |«      }n |
j                  d#¬$«      j                  «       }|rt        j                  d%d|«      }|r|d d& nd}||||fS )'Nr   r&   r9   Tr'   u-   \s*[-â€“â€”]\s*ä¸´æ²‚ä¸´æ¸¯ç»�æµŽå¼€å�‘åŒº.*$ÚmetaÚnameÚPubDateÚcontentz(\d{4}-\d{2}-\d{2})r   r    Úv_news_contentr"   Úvsb_content_2)ÚidÚconÚtableÚpr$   r%   z//zhttp:r)   Úhttpz&amp;ú&ÚimgÚsrczQ\s+(class|style|align|valign|width|height|border|cellspacing|cellpadding)="[^"]*"z<[^>]+>z<imgz

ú
)Ú	separatorz&nbsp;éÈ   )r   r+   r-   r0   Úsubr(   r   r1   r3   Úsetr,   r   ÚstrrI   r.   r   ÚlstripÚreplacer4   Újoin)r5   r   r7   r9   Ú	title_tagÚrawr;   Úpubdate_metarC   ÚmÚvcÚ
paragraphsÚtable_psÚtblrI   Úp_copyr$   r%   rL   rM   Úp_htmlÚp_textÚtbl_copyÚtbl_htmlÚsummarys                            r   Úextract_detailre   k   sÞ  € Ü˜˜}Ó-€Dð €EØ—	‘	˜'Ó"€IÙØ× Ñ  tÐ Ó,ˆä�f‰fÐEÀrÈ3ÓOˆØ—	‘	“ˆð €HØ—9‘9˜V f¨iÐ%8Ó9€LÙØ×"Ñ" 9¨bÓ1ˆÜ�I‰IÐ,¨gÓ6ˆÙØ—w‘w˜q“zˆHð €GØ	�‰�5Ð!1ˆÓ	2€BÙØ�Y‰Y�u ˆYÓ1ˆÙà�Y‰Y�u UˆYÓ+ˆâ	Øˆ
ä“5ˆØ—;‘;˜wÓ'ò 	/ˆCØ�O‰O˜CŸL™L¨Ó-Õ.ð	/à—‘˜SÓ!ó  	&ˆAØ�H‰}Øä"¤3 q£6¨=Ó9×;Ñ;Òc¼}ÌSÐQRËVÐUbÓ?cˆFØ—_‘_ SÓ)ò 
7�Ø—u‘u˜V RÓ(×.Ñ.Ó0�ÙØØ—?‘? 4Ô(Ø" T™>‘DØ—_‘_ SÔ)Ü# d™?‘DØŸ™¨Ô0Ü# c™>¨D¯K©K¸Ó,<Ñ<�DØ ŸL™L¨°#Ó6��&’	ð
7ð —‘ uÓ-ò 
7�Ø—g‘g˜e RÓ(×.Ñ.Ó0�ÙØØ—>‘> $Ô'Ø! C™-‘CØ—^‘^ CÔ(Ü" S™.‘CØŸ™¨Ô/Ü" S™.¨3¯:©:°c«?Ñ:�CØ Ÿ[™[¨°#Ó6��E’
ð
7ô —V‘VÐpÐrtÔvyð  {Aó  wBó  CˆFä—V‘V˜J¨¨FÓ3×9Ñ9Ó;ˆFÙ˜f¨FÑ2ÙØ×Ñ˜fÖ%ðA 	&ðD —;‘;˜wÓ'ó 	,ˆCÜ$¤S¨£X¨}Ó=ˆHØ×&Ñ& sÓ+ò 
7�Ø—u‘u˜V RÓ(×.Ñ.Ó0�ÙØØ—?‘? 4Ô(Ø" T™>‘DØ—_‘_ SÔ)Ü# d™?‘DØŸ™¨Ô0Ü# c™>¨D¯K©K¸Ó,<Ñ<�DØ ŸL™L¨°#Ó6��&’	ð
7ð  ×(Ñ(¨Ó/ò 
7�Ø—g‘g˜e RÓ(×.Ñ.Ó0�ÙØØ—>‘> $Ô'Ø! C™-‘CØ—^‘^ CÔ(Ü" S™.‘CØŸ™¨Ô/Ü" S™.¨3¯:©:°c«?Ñ:�CØ Ÿ[™[¨°#Ó6��E’
ð
7ô ˜8“}ˆHÛØ×!Ñ! (Ö+ð5	,ñ6 Ø—k‘k *Ó-‰Gà—k‘k¨D�kÓ1×7Ñ7Ó9ˆGáÜ—&‘&˜ B¨Ó0ˆá&ˆg�d�s‰m¨B€GØ�(˜G WÐ,Ð,r   c                 óø  — dd l }|j                  t        d¬«      }|j                  «       }d}g }| D ]†  \  }}}}	}
	 |j	                  d|
f«       |j                  «       rŒ.|j	                  d|
|t        |||	|
dt        t        df«       |j                  }|r|j                  ||t        |	xs df«       |d	z  }Œˆ |j                  «        |rK|D ]  \  }}}}		 |j	                  d||||	f«       Œ  |j                  «        t        dt        |«      › d�«       |j                  «        |S # t        $ r}t        d
|d d › d|› �«       Y d }~�Œd }~ww xY w# t        $ r}t        d|› d|› �«       Y d }~Œ¥d }~ww xY w)Nr   é
   r   z)SELECT id FROM gov_raw WHERE page_url = ?zíINSERT INTO gov_raw 
                   (page_url, title, site_name, publish_date, content, summary,
                    source_url, category, industry, group_name, script_name)
                   VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)r   zcrawl_lylgkfq_gsgg.pyr&   r   z  [DB ERROR] é   z: zVINSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary) VALUES (?, ?, ?, ?)z  [FTS ERROR] id=u     FTSå�Œæ­¥: õ   æ�¡)Úsqlite3ÚconnectÚDB_PATHÚcursorÚexecuteÚfetchoneÚ	SITE_NAMEÚINDUSTRYÚGROUPÚ	lastrowidr4   r   r   ÚcommitÚlenÚclose)Ú
items_datarj   ÚconnÚcÚinsertedÚ	fts_batchr9   r;   rC   rd   Úpage_urlÚnew_idr   ÚridÚsites                  r   Ú
save_to_dbr€   Ø   s›  € ÛØ�?‰?œ7¨Bˆ?Ó/€DØ�‰‹€AØ€HØ€IØ7Aò 5Ñ3ˆˆx˜ '¨8ð	5Ø�I‰IÐAÀHÀ;ÔOØ�z‰zŒ|ØØ�I‰Ið?ð ˜5¤)¨X°wÀØ˜>¬8´UÐ<SðUôð —[‘[ˆFÙØ× Ñ  &¨%´¸GºMÀrÐ!JÔKØ˜‰M‰Hð!5ð& 	‡K�K„MÙØ)2ò 	6Ñ%ˆC�˜˜gð6Ø—	‘	ØlØ˜%  wÐ/õð	6ð 	�‰ŒÜ�œc )›nÐ-¨SÐ1Ô2Ø‡J�J„LØ€Oøô ò 	5Ü�M %¨¨ * ¨R°¨sÐ3×4Ò4ûð	5ûô ò 6ÜÐ)¨#¨¨b°°Ð4×5Ñ5ûð6ús6   ¼#D*Á AD*ÃEÄ*	EÄ3EÅEÅ	E9ÅE4Å4E9c            
      óÜ  — dd l } | j                  t        › d�¬«      }|j                  dt        dd¬«       |j                  dd	d
¬«       |j                  «       }|j                  rdn|j                  }d}t        d|dz   «      D �]7  }t        dt        j                  d«      › d|› d�dd¬«       t        |«      }|st        d«        nõt        |«      }|st        d«        nÛt        t        |«      › d�d¬«       g }|D ]X  \  }	}
}t        |	«      }|sŒt!        ||	«      \  }}}}|j#                  |xs |
|xs ||||	f«       t        j$                  d«       ŒZ t'        |«      }||z  }t        d|› dt        |«      › d|› d�d¬«       |j                  r�Œ|dk(  s�Œt        |«      dkD  s�Œ-t        d«        n t        d«       t        d|› d �«       t        d!t        › �«       y )"Nr   u   çˆ¬è™«)Údescriptionz--pagesr   u   çˆ¬å�–é¡µæ•°(å…±141é¡µ))ÚtypeÚdefaultÚhelpz--fullÚ
store_trueu   å…¨é‡�çˆ¬å�–(141é¡µ))Úactionr…   é�   ú[z%H:%M:%Su   ] ç¬¬u   é¡µ...ú T)ÚendÚflushu   è¯·æ±‚å¤±è´¥ï¼Œå�œæ­¢u   æ— æ•°æ�®ï¼Œå�œæ­¢ri   )rŒ   g      à?u     å…¥åº“r)   u   æ�¡ (ç´¯è®¡ú)u      å…¨éƒ¨å·²å­˜åœ¨ï¼Œå¢žé‡�å�œæ­¢u   
===== å®Œæˆ� =====u   æ–°å¢žå…¥åº“: u    æ�¡u   ç«™ç‚¹: )ÚargparseÚArgumentParserrp   Úadd_argumentÚintÚ
parse_argsÚfullÚpagesÚranger   ÚtimeÚstrftimer   r>   ru   r   re   r4   Úsleepr€   )rŽ   ÚparserÚargsÚ	max_pagesÚ	total_newr   r5   r6   Úbatchr%   r9   r;   Údetail_htmlÚdtÚddrC   rd   Úsaveds                     r   Úmainr¢     sè  € ÛØ×$Ñ$´I°;¸fÐ1EÐ$ÓF€FØ
×Ñ˜	¬°QÐ=VÐÔWØ
×Ñ˜¨Ð<RÐÔSØ×ÑÓ€Dà—y’y‘ d§j¡j€IØ€Iä˜˜I¨™MÓ*ó ˆÜ�”$—-‘- 
Ó+Ð,¨E°'°¸&ÐAÀsÐRVÕWÜ˜wÓ'ˆÙÜÐ)Ô*Ùä˜4Ó ˆÙÜÐ&Ô'ÙÜ”�U“�˜CÐ ¨Õ-àˆØ%*ò 	Ñ!ˆD�%˜Ü˜d›)ˆKÙØÜ'5°kÀ4Ó'HÑ$ˆB��G˜WØ�L‰L˜"š+  r¢~¨X°wÀÈÐNÔOÜ�J‰J�s�Oð	ô ˜5Ó!ˆØ�UÑˆ	Ü�˜˜˜q¤ U£ ¨K¸	°{À!ÐDÈDÕQØ�yŒy˜U aœZ¬C°«J¸¬NÜÐ4Ô5Ùð7ô: 
Ð Ô"Ü	ˆN˜9˜+ TÐ
*Ô+Ü	ˆH”Y�KÐ
 Õ!r   Ú__main__)Ú__doc__r
   r0   ÚsysÚosr–   Úbs4r   rl   r   rp   rr   rq   r   r	   r   r   r>   re   r€   r¢   Ú__name__© r   r   ú<module>rª      s‡   ðñ	ó Û 	Û 
Û 	Û Ý à
€Ø&€Ø'€	Ø€Ø€ð ð  Dð€ð €òòò0òfj-òZ&òR)"ðX ˆzÒÙ…Fð r   