Ë
    V_Š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dZdZd	Zd
ZdZdddœZg d¢Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uÌ   
æ±Ÿå®‰åŽ¿äººæ°‘æ”¿åºœ - é€šçŸ¥å…¬å‘Š çˆ¬è™«
CMS: TRS (TRS_UEDITOR)
List: /zwgk/jbxxgk/tzgg/index.html (P1), index_{N-1}.html(PN, N>=2)
Detail: /zwgk/jbxxgk/tzgg/YYYYMM/tYYYYMMDD_XXXXXXX.html
æ¯�é¡µ15æ�¡
é    N)ÚBeautifulSoup)Úurljoinz/root/search.dbu"   æ±Ÿå®‰åŽ¿äººæ°‘æ”¿åºœ-é€šçŸ¥å…¬å‘Šu   é€šçŸ¥å…¬å‘Šu   å››å·�zhttps://ybja.gov.cnz/zwgk/jbxxgk/tzggé   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zzh-CN,zh;q=0.9)z
User-AgentzAccept-Language)
u   ã€�æ‰“å�°æœ¬é¡µã€‘u   ã€�å…³é—­çª—å�£ã€‘u   æ‰“å�°æœ¬é¡µu   å…³é—­çª—å�£u   è½¬è½½åˆ†äº«ï¼šu   æµ�è§ˆé‡�ï¼šu   ç›¸å…³é™„ä»¶ï¼šu   ç›¸å…³ç¨¿ä»¶ï¼šu   æ‰«ä¸€æ‰«åœ¨æ‰‹æœºæ‰“å¼€u	   é™„ä»¶ï¼šc                 ó   — t        | «      S )u'   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼ˆä¸�è½¬ mdï¼‰)Ústr)ÚtableÚargsÚkwargss      ú$/root/gov_crawler/crawl_ybja_tzgg.pyÚtable_to_mdr   #   s   € äˆu‹:Ðó    c                 óê  — g }| j                   D �]Ñ  }t        |t        «      r%|j                  «       }|sŒ'|j	                  |«       Œ9|j
                  dk(  rƒ|j                  dd«      j                  «       }|j                  d¬«      }|r:|r8|j                  d«      st        ||«      n|}|j	                  d|› d|› d	�«       Œ¶|sŒ¹|j	                  |«       ŒË|j
                  d
k(  rh|j                  dd«      }|sŒï|j                  dd«      }	|j                  d«      st        ||«      n|}
|j	                  |	r	d|	› d|
› d	�nd|
› d	�«       �ŒB|j
                  dv r*|j                  dd¬«      }|s�Œg|j	                  |«       �Œz|j
                  dk(  r|j	                  d«       �Œœt        |d«      s�Œª|j                  dd¬«      }|s�ŒÁ|j	                  |«       �ŒÔ dj                  |«      S )NÚaÚhrefÚ T©ÚstripÚhttpú[ú](ú)ÚimgÚsrcÚaltú![ú![]()ÚbÚstrongÚspanÚfontÚemú Úbrú
Úget_text)ÚcontentsÚ
isinstancer   r   ÚappendÚnameÚgetr%   Ú
startswithr   ÚhasattrÚjoin)Úp_tagÚ
detail_urlÚpartsÚelemÚtr   ÚtextÚfullr   r   Úfull_srcs              r   Úrender_paragraphr6   '   s¬  € Ø€EØ—‘ó  ˆÜ�dœCÔ Ø—
‘
“ˆAÚØ—‘˜Q•Ø�Y‰Y˜#ÒØ—8‘8˜F BÓ'×-Ñ-Ó/ˆDØ—=‘= t�=Ó,ˆDÙ™Ø8<¿¹ÈÔ8O”w˜z¨4Ô0ÐUY�Ø—‘˜q   b¨¨¨aÐ0Õ1ÚØ—‘˜TÕ"Ø�Y‰Y˜%ÒØ—(‘(˜5 "Ó%ˆCÚØ—h‘h˜u bÓ)�Ø;>¿>¹>È&Ô;Qœ7 :¨sÔ3ÐWZ�Ø—‘¹˜r #  b¨¨
°!Ñ4À4ÈÀzÐQRÐASÖTØ�Y‰YÐ?Ñ?Ø—‘˜c¨�Ó.ˆAÛØ—‘˜Q–Ø�Y‰Y˜$ÒØ�L‰L˜ÖÜ�T˜:Ö&Ø—‘˜c¨�Ó.ˆAÛØ—‘˜Q–ð9 ð: �8‰8�E‹?Ðr   c           	      ó†  ‡— g }t        «       }| j                  D �]Ê  }|j                  €Œ|j                  j                  «       }|dk(  r!t	        ||«      }|sŒ?|j                  |«       ŒQ|dk(  rA|j                  d¬«      }t        |«      dk  rŒwt        |«      }|sŒ…|j                  |«       Œ—|dk(  r�|j                  dd«      }	|	sŒ±t        |«      |vsŒ¿|j                  t        |«      «       |j                  d	d«      }
|	j                  d
«      st        ||	«      n|	}|j                  |
r	d|
› d|› d�nd|› d�«       �Œ,|dv �rR|j                  g d¢d¬«      D �]7  }t        |«      |v rŒ|j                  t        |«      «       |j                  dk(  r7|j                  dd¬«      }|sŒQt	        ||«      }|sŒ`|j                  |«       Œr|j                  dk(  rA|j                  d¬«      }t        |«      dk  rŒ¢t        |«      }|sŒ°|j                  |«       ŒÂ|j                  dk(  sŒÒ|j                  dd«      }	|	sŒç|j                  d	d«      }
|	j                  d
«      st        ||	«      n|	}|j                  |
r	d|
› d|› d�nd|› d�«       �Œ: �Œƒ|dv s�Œ‰|j                  dd¬«      D ],  }|j                  dd¬«      }|sŒ|j                  d|z   «       Œ. �ŒÍ g }|D ]C  Št        ˆfd„t         D «       «      rŒt#        j$                  d‰«      rŒ3|j                  ‰«       ŒE dj'                  |«      S )NÚpr   Tr   é   r   r   r   r   r   r   r   r   r   )ÚdivÚsectionÚarticle)r8   r   r   ©Ú	recursiver"   )ÚulÚolÚliFz- c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0Úskr8   s     €r   ú	<genexpr>z"extract_content.<locals>.<genexpr>‰   s   øè ø€ Ò,˜2ˆr�QŒwÑ,ùs   ƒu   ^(æ�¥æº�|å�‘å¸ƒæ—¥æœŸ)[ï¼š:]\s*z

)ÚsetÚchildrenr)   Úlowerr6   r(   r%   Úlenr   r*   ÚidÚaddr+   r   Úfind_allÚanyÚ
SKIP_TEXTSÚreÚmatchr-   )Úcontent_divr/   r0   Ú	processedÚchildÚtnÚtxtÚall_textÚmdr   r   r5   ÚsubÚrenderedrA   Úfilteredr8   s                   @r   Úextract_contentr\   I   s  ø€ Ø€EÜ“€Ià×%Ñ%ó 8-ˆØ�:‰:ÐØØ�Z‰Z×ÑÓˆà�Š9Ü" 5¨*Ó5ˆCÚØ—‘˜SÕ!à�7Š]Ø—~‘~¨D�~Ó1ˆHÜ�8‹}˜rÒ!ØÜ˜UÓ#ˆBÚØ—‘˜RÕ à�5Š[Ø—)‘)˜E 2Ó&ˆCÚ”r˜%“y¨	Ò1Ø—‘œb ›iÔ(Ø—i‘i  rÓ*�Ø;>¿>¹>È&Ô;Qœ7 :¨sÔ3ÐWZ�Ø—‘¹˜r #  b¨¨
°!Ñ4À4ÈÀzÐQRÐASÖTàÐ0Ò0Ø—~‘~Ò&;Àt�~ÓLó ]�Ü�c“7˜iÑ'ØØ—‘œb ›gÔ&Ø—8‘8˜s’?ØŸ,™, s°$˜,Ó7�CÙØ Ü/°°ZÓ@�HÚØŸ™ XÕ.Ø—X‘X Ò(Ø"Ÿ|™|°$˜|Ó7�HÜ˜8“} rÒ)Ø Ü$ SÓ)�BÚØŸ™ RÕ(Ø—X‘X Ó&ØŸ'™' %¨Ó,�CÚØ!Ÿg™g e¨RÓ0˜ØCFÇ>Á>ÐRXÔCY¤7¨:°sÔ#;Ð_b˜ØŸ™Á r¨#¨¨b°°
¸!Ñ%<È4ÐPXÈzÐYZÐI[Ö\ò/]ð2 �<ÓØ—n‘n T°U�nÓ;ò -�Ø—k‘k #¨T�kÓ2�ÚØ—L‘L ¨¡Õ,ò-ðk8-ðt €HØò ˆÜÓ,¤Ô,Ô,ØÜ�8‰8Ð6¸Ô:ØØ�‰˜Õðð �;‰;�xÓ Ð r   c                 óÈ  — g }t        «       }dD ]à  }| j                  d|¬«      }|sŒ|j                  dd¬«      D ]²  }|d   }|j                  d«      r
t        |z   }n,|j                  d	«      st        dz   |j                  d«      z   }|j                  d¬
«      xs& |j                  d«      d   j                  d«      d   }||vsŒŽ|j                  |«       |j                  ||dœ«       Œ´ Œâ |sî| j                  dd¬«      D ]Ø  }|d   }t        j                  d|t        j                  «      sŒ.|j                  d«      r
t        |z   }n,|j                  d	«      st        dz   |j                  d«      z   }|j                  d¬
«      xs& |j                  d«      d   j                  d«      d   }||vsŒ´|j                  |«       |j                  ||dœ«       ŒÚ |S )N)ÚfjxzÚxgfjr:   ©Úclass_r   T©r   r   ú/r   r   éÿÿÿÿú?r   )r)   Úurlz&\.(pdf|doc|docx|xls|xlsx|rar|zip|txt)$)rG   ÚfindrM   r+   ÚBASE_URLÚlstripr%   ÚsplitrL   r(   rP   ÚsearchÚI)ÚsoupÚattsÚseenÚclsr:   r   r   r)   s           r   Úextract_attachmentsrq   ’   s»  € Ø€DÜ‹5€Dàò =ˆØ�i‰i˜ cˆiÓ*ˆÚØ—\‘\ #¨D�\Ó1ò 	=�Ø˜‘y�Ø—?‘? 3Ô'Ü# d™?‘DØŸ™¨Ô0Ü# c™>¨D¯K©K¸Ó,<Ñ<�DØ—z‘z¨�zÓ-ÒR°·±¸C³ÀÑ1D×1JÑ1JÈ3Ó1OÐPQÑ1R�Ø˜tÒ#Ø—H‘H˜T”NØ—K‘K¨°dÑ ;Õ<ñ	=ð=ñ Ø—‘˜s¨�Ó.ò 
	=ˆAØ�V‘9ˆDÜ�y‰yÐBÀDÌ"Ï$É$ÕOØ—?‘? 3Ô'Ü# d™?‘DØŸ™¨Ô0Ü# c™>¨D¯K©K¸Ó,<Ñ<�DØ—z‘z¨�zÓ-ÒR°·±¸C³ÀÑ1D×1JÑ1JÈ3Ó1OÐPQÑ1R�Ø˜tÒ#Ø—H‘H˜T”NØ—K‘K¨°dÑ ;Õ<ð
	=ð €Kr   c                 óD  — 	 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¬«      }|s|}d}	|j                  dddi¬	«      }
|
r'|
j                  d
«      r|
d
   j                  «       d d }	|j                  dd¬«      }|s|j                  dd¬«      }|s|j                  dd
¬«      }t        |«      }|rt        || «      }nd}t        |j                  «       «      dk  r$d| › d|› d�}|r|D ]  }|d|d   › d|d   › d�z  }Œ ||	||fS # t
        $ r}d d d g fcY d }~S d }~ww xY w)Né   ©ÚheadersÚtimeoutúutf-8úhtml.parserr   Úmetar)   ÚArticleTitle)ÚattrsÚcontentr:   Údoctitler`   Tr   ÚPubDateé
   ÚTRS_UEDITORÚdoc_contentz<p><a href="z">z</a></p>u   

é™„ä»¶ï¼š[r   rf   r   )Úrequestsr*   ÚHEADERSÚencodingr3   Ú	Exceptionr   rg   r   r%   rq   r\   rJ   )rf   Ú
list_titleÚrÚhtmlÚerm   ÚtitleÚmtÚdtÚdate_strrX   rR   Úattachmentsr|   r   s                  r   Úfetch_detailr�   ³   sÕ  € ð$Ü�L‰L˜¤g°rÔ:ˆØˆŒ
Ø�v‰vˆô ˜˜}Ó-€Dð €EØ	�‰�6 &¨.Ð!9ˆÓ	:€BÙ	ˆb�f‰f�YÔØ�9‘×#Ñ#Ó%ˆÙØ�Y‰Y�u ZˆYÓ0ˆÙØ—K‘K d�KÓ+ˆEÙØˆð €HØ	�‰�6 &¨)Ð!4ˆÓ	5€BÙ	ˆb�f‰f�YÔØ�i‘=×&Ñ&Ó(¨¨"Ð-ˆð —)‘)˜E¨-�)Ó8€KÙØ—i‘i ¨m�iÓ<ˆÙØ—i‘i ¨i�iÓ8ˆä% dÓ+€KáÜ! +¨sÓ3‰àˆä
ˆ7�=‰=‹?Ó˜bÒ Ø    R¨ w¨hÐ7ˆÙØ ò E�Ø˜^¨A¨f©I¨;°b¸¸5¹¸
À!ÐDÑD‘ðEð �(˜G [Ð0Ð0øôW ò $Ø�T˜4 Ð#Õ#ûð$ús   ‚/F Æ	FÆFÆFÆFc                 ó   — | dk(  rt         › t        › d�}nt         › t        › d| dz
  › d�}	 t        j                  |t        d¬«      }d|_        t        |j                  d
«      }g }|j                  dd¬«      }|sg S |j                  dd¬«      D �]  }|j                  dd¬«      }|sŒ|d   }	|	r|	j                  d«      sd|	v rŒ7t        j                  d|	«      st        j                  d|	«      sŒd|j                  dd«      xs |j                  d¬«      }
|
rt!        |
«      dk  rŒ›|	j                  d«      r
t         |	z   }n |	j                  d«      r|	}nt#        ||	«      }|j                  d«      }|r|j                  d¬«      nd}|j%                  |
||f«       �Œ |S # t        $ r}t        d| › d	|› �«       g cY d }~S d }~ww xY w)Né   z/index.htmlz/index_z.htmlrs   rt   rw   ú  Page z error: rx   r?   Úlist_contentr`   rA   Tr=   r   rb   r   ú#Ú
javascriptz/t\d{8}_\d+\.html$z\d{6}/t\d{8}_rŠ   r   r   r   rc   r   r   )rh   Ú	LIST_PATHr‚   r*   rƒ   r„   r…   Úprintr   r3   rg   rM   r+   rP   rk   r%   rJ   r   r(   )Úpage_numrf   r‡   r‰   rm   Úarticlesr?   rA   r   r   rŠ   Úfull_urlÚ	date_spanÚdates                 r   Úextract_list_pager�   æ   sÅ  € Ø�1‚}Ü�
œ9˜+ [Ð1‰ä�
œ9˜+ W¨X¸©\¨N¸%Ð@ˆðÜ�L‰L˜¤g°rÔ:ˆØˆŒ
ô
 ˜Ÿ™ Ó/€Dà€HØ	�‰�4 ˆÓ	/€BÙØˆ	à�k‰k˜$¨$ˆkÓ/ó 1ˆØ�G‰G�C˜dˆGÓ#ˆÙØØ�‰yˆÙ�t—‘ sÔ+¨|¸tÑ/CØä�y‰yÐ.°Ô5¼b¿i¹iÐHXÐZ^Ô>_Øà—‘�g˜rÓ"Ò< a§j¡j°t jÓ&<ˆÙœ˜E›
 QšØà�?‰?˜3ÔÜ $‘‰HØ�_‰_˜VÔ$Ø‰Hä˜s DÓ)ˆHà—G‘G˜F“Oˆ	Ù1:ˆy×!Ñ!¨Ð!Ô-Àˆà�‰˜ ¨$Ð/Ö0ð31ð6 €OøôM ò Ü�˜�z ¨!¨Ð-Ô.Ø�	ûðús   ¬#F' Æ'	GÆ0GÇGÇGc                  ó|   — t        j                  t        «      } | j                  d«       | j                  d«       | S )NzPRAGMA journal_mode=WALzPRAGMA busy_timeout=5000)Úsqlite3ÚconnectÚDB_PATHÚexecute)Úconns    r   Úinit_dbr¤     s/   € Ü�?‰?œ7Ó#€DØ‡L�LÐ*Ô+Ø‡L�LÐ+Ô,Ø€Kr   c                 ó:  — |r|d d n|}t        j                  dd|«      j                  «       }|rt        j                  |d¬«      nd}t        d«      D ]Y  }	 | j                  dt        |||j                  «       |||t        |t        f
«      }	| j                  «        |	j                  d	kD  c S  y# t        j                  $ rU}
d
t        |
«      v r|dk  rt        j                   d«       Y d }
~
Œœt#        d|
› �t$        j&                  ¬«       Y d }
~
 yd }
~
ww xY w)NéÈ   z\s+r"   F)Úensure_asciiz[]é   zÕINSERT OR IGNORE INTO gov_raw
                   (site_name, source_url, page_url, title, publish_date, summary, content, category, attachments, group_name)
                   VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)r   Úlockedé   z  DB error: )Úfile)rP   rY   r   ÚjsonÚdumpsÚranger¢   Ú	SITE_NAMEÚCATEGORYÚGROUPÚcommitÚrowcountrŸ   ÚOperationalErrorr   ÚtimeÚsleepr—   ÚsysÚstderr)r£   rŠ   Úpage_urlÚpublish_dater|   rŽ   ÚsummaryÚatt_jsonÚattemptÚcurr‰   s              r   Úsave_articler¿     sý   € Ù&ˆg�d�s‰m¨E€GÜ�f‰f�V˜S 'Ó*×0Ñ0Ó2€GÙ>IŒt�z‰z˜+°EÕ:Èt€HÜ˜“8ò ˆð	Ø—,‘,ð<ô ˜H h°·±³¸|Ø˜'¤8¨X´uð>ó	ˆCð �K‰KŒMØ—<‘< !Ñ#Ò#ðð" øô ×'Ñ'ò 	Øœ3˜q›6Ñ! g°¢kÜ—
‘
˜1”ÜÜ�L  Ð$¬3¯:©:Õ6Ýûð	ús   ÁAB2Â2DÃ'DÃ1DÄDc            
      óä  — t         } t        t        j                  «      dkD  r	 t	        t        j                  d   «      } t        dt        › d| › �«       t        «       }d}d}t        d| dz   «      D ]Ý  }t        |«      }|st        d|› d�«        n¿|t        |«      z  }|D ]Œ  \  }}}|r|d	k  rŒ|j                  d
|f«      }	|	j                  «       rŒ3t        ||«      \  }
}}}|
xs |}|xs |}|xs	 d|› d|› d�}|xs g }t        ||||||«      r|dz  }t        j                   d«       ŒŽ t        d|› dt        |«      › d|› d�«       Œß |j#                  «        |j%                  «        t        d|› d|› �«       y # t
        $ rb t        j                  d   dv rIt        t        j                  «      dkD  r-	 t	        t        j                  d   «      } n# t
        $ r Y nw xY wY �Œ®w xY w)Nr‘   )z--max-pagesrª   z	Scraping z, max pages: r   r’   z: 0 articles (end)z
2020-01-01z)SELECT id FROM gov_raw WHERE page_url = ?r   r   r   g333333Ó?z: z found, z new so farz
Done! Total found: z, New: )Ú	MAX_PAGESrJ   r·   ÚargvÚintÚ
ValueErrorr—   r¯   r¤   r®   r�   r¢   Úfetchoner�   r¿   rµ   r¶   r²   Úclose)Ú	max_pagesr£   Ú	total_newÚtotal_foundÚpnr™   rŠ   r¹   rœ   r¾   Ú	det_titleÚdet_dateÚdet_contentÚdet_attsÚfinal_titleÚ
final_dateÚfinal_contentÚ
final_attss                     r   ÚmainrÓ   7  s   € Ü€IÜ
Œ3�8‰8ƒ}�qÒð	ÜœCŸH™H Q™KÓ(ˆIô 
ˆI”i�[ ¨i¨[Ð
9Ô:ä‹9€DØ€IØ€Kä�A�y 1‘}Ó%ò MˆÜ$ RÓ(ˆÙÜ�G˜B˜4Ð1Ð2Ô3Ùà”s˜8“}Ñ$ˆà%-ò 	Ñ!ˆE�8˜TÙ˜˜|Ò+Øà—,‘,ÐJÈXÈKÓXˆCØ�|‰|Œ~Øä9EÀhÐPUÓ9VÑ6ˆI�x ¨hØ#Ò, uˆKØ!Ò) TˆJØ'ÒI¨Q¨{¨m¸2¸h¸ZÀqÐ+IˆMØ!š RˆJä˜D +¨x¸À]ÐT^Ô_Ø˜Q‘�	ä�J‰J�s�Oð#	ô& 	�˜�t˜2œc (›m˜_¨H°Y°K¸{ÐKÕLð7Mð: 	‡K�K„MØ‡J�J„LÜ	Ð! + ¨g°i°[Ð
AÕBøô[ ò 	Ü�x‰x˜‰{Ð.Ñ.Ü”s—x‘x“= 1Ò$ðÜ$'¬¯©°©Ó$4™	øÜ%ò Ùðýð	ús5   ¤F Æ:G/Æ?GÇG/Ç	G(Ç%G/Ç'G(Ç(G/Ç.G/Ú__main__)r   )Ú__doc__r‚   rP   r¬   rŸ   rµ   r·   Úbs4r   Úurllib.parser   r¡   r¯   r°   r±   rh   r–   rÁ   rƒ   rO   r   r6   r\   rq   r�   r�   r¤   r¿   rÓ   Ú__name__rC   r   r   ú<module>rÙ      sž   ðñ÷ .× -× -Ý Ý  à
€Ø0€	Ø€Ø€Ø €Ø€	Ø€	ð DØ'ñ€ò
€
òòòDF!òRóB01òf/òdòò02Cðj ˆzÒÙ…Fð r   