Ë
    ¡Š£jj  ã                   ó˜   — d 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	d
iZh d£Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uû   
é•¿æ­¦åŽ¿äººæ°‘æ”¿åºœ â€” é‡�å¤§å»ºè®¾é¡¹ç›®
https://www.changwu.gov.cn/zfxxgk/fdzdgk/zdjsxm2/
CMS: TRS/WCM
åˆ†é¡µ: index.html (0), index_1.html... (è™šæ ‡31é¡µ)
è¯¦æƒ…: ./YYYYMM/tYYYYMMDD_XXXXXX.html
æ­£æ–‡: div.article-content.article-content-body
é    N)Údatetime)ÚBeautifulSoupz/root/search.dbu   é•¿æ­¦åŽ¿-é‡�å¤§å»ºè®¾é¡¹ç›®z;https://www.changwu.gov.cn/zfxxgk/fdzdgk/zdjsxm2/index.htmlz1https://www.changwu.gov.cn/zfxxgk/fdzdgk/zdjsxm2/z
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36>)   ÚpÚddÚdlÚdtÚh1Úh2Úh3Úh4Úh5Úh6ÚhrÚliÚolÚtdÚthÚtrÚulÚdivÚnavÚpreÚformÚmainÚasideÚtableÚtbodyÚtfootÚtheadÚcenterÚdialogÚfigureÚfooterÚheaderÚhgroupÚaddressÚarticleÚcaptionÚdetailsÚsectionÚfieldsetÚ
blockquoteÚ
figcaptionc                 óÒ   ‡‡‡— | €yddl }ddlmŠ g Šˆˆˆfd„Š ‰| «       dj                  ‰«      }|j	                  dd|«      }|j	                  dd	|«      }|j                  «       S )
ul   å�—çº§è¾¹ç•Œå‡ºæ�¢è¡Œã€�è¡Œå†…èŠ‚ç‚¹ç›´æŽ¥æ‹¼æŽ¥ã€�<br> å‡ºæ�¢è¡Œï¼ˆâ‰ˆ æµ�è§ˆå™¨çœ‹åˆ°çš„æ�¢è¡Œç»“æž„ï¼‰ã€‚NÚ r   )ÚNavigableStringc                 óF  •— | j                   D ]‘  }t        |‰«      r‰j                  t        |«      «       Œ*t	        |dd «      dk(  r‰j                  d«       ŒLt	        |dd «      t
        v r+‰j                  d«        ‰|«       ‰j                  d«       ŒŠ ‰|«       Œ“ y )NÚnameÚbrú
)ÚchildrenÚ
isinstanceÚappendÚstrÚgetattrÚ_BLOCK_TAGS)ÚnodeÚchr0   ÚoutÚwalks     €€€ú"/root/gov_crawler/crawl_changwu.pyr>   zbody_text.<locals>.walk,   s„   ø€ Ø—-‘-ò 
	ˆBÜ˜"˜oÔ.Ø—
‘
œ3˜r›7Õ#Ü˜˜V TÓ*¨dÒ2Ø—
‘
˜4Õ Ü˜˜V TÓ*¬kÑ9Ø—
‘
˜4Ô Ù�R”Ø—
‘
˜4Õ á�R•ñ
	ó    z[ \t\r\f\v]*\n[ \t\r\f\v]*r4   ú\n{3,}ú

)ÚreÚbs4r0   ÚjoinÚsubÚstrip)ÚelÚ_reÚtr0   r=   r>   s      @@@r?   Ú	body_textrK   $   sb   ú€ à	€zØÛÝ#Ø
€Cöñ 	ˆ„HØ
�‰�‹€AØ�‰Ð-¨t°QÓ7€AØ�‰�	˜6 1Ó%€AØ�7‰7‹9Ðr@   c                 ó�   — | dk(  rt         }nt        › d| › d�}t        j                  |t        d¬«      }d|_        |j                  S )Nr   Úindex_z.htmlé   ©ÚheadersÚtimeoutúutf-8)ÚLIST_URLÚBASE_URLÚrequestsÚgetÚHEADERSÚencodingÚtext)ÚpageÚurlÚrs      r?   Ú
fetch_pager]   ?   sB   € Øˆq‚yÜ‰ä�
˜&   eÐ,ˆÜ�‰�S¤'°2Ô6€AØ€A„JØ�6‰6€Mr@   c                 óð  — t        | d«      }g }|j                  d«      D ]Ó  }|j                  dd¬«      }|sŒ|d   }|j                  d¬«      }|rt	        |«      dk  rŒAd	|vrŒF|j                  d
«      r|}n>|j                  d«      rt        |dd  z   }n |j                  d«      rd|z   }n	t        |z   }d}|j                  d«      }	|	r|	j                  d¬«      }|j                  |||dœ«       ŒÕ |S )Núhtml.parserr   ÚaT)Úhrefra   ©rG   é   Út202Úhttpz./é   ú/zhttps://www.changwu.gov.cnr/   Úspan)Útitler[   Údate)r   Úfind_allÚfindÚget_textÚlenÚ
startswithrT   r7   )
ÚhtmlÚsoupÚitemsr   r`   ra   ri   Úfull_urlÚdate_strrh   s
             r?   Úextract_itemsru   H   s  € Ü˜˜}Ó-€DØ€EØ�m‰m˜DÓ!ò JˆØ�G‰G�C˜dˆGÓ#ˆÙØØ�‰yˆØ—
‘
 �
Ó&ˆÙœ˜E›
 QšØØ˜ÑØà�?‰?˜6Ô"Ø‰HØ�_‰_˜TÔ"Ü $ q r (Ñ*‰HØ�_‰_˜SÔ!Ø3°dÑ:‰Hä $‘ˆHàˆØ�w‰w�v‹ˆÙØ—}‘}¨4�}Ó0ˆHà�‰˜u¨X¸xÑHÕIð3Jð4 €Lr@   c                 óØ  — 	 t        j                  | t        d¬«      }d|_        t	        |j
                  d«      } |g d¢«      D ]  }|j                  «        Œ d}|j                  dd„ ¬	«      }|r7t        j                  d
|j                  «       «      }|r|j                  d«      }|j                  dd„ ¬	«      }|s|j                  dd„ ¬	«      }|r¦|j                  d«      D ]  }|j                  «        Œ g }	t        «       }
|j                  ddg«      D ]>  }|j                  d¬«      }|sŒ||
vsŒ|	j                  |«       |
j!                  |«       Œ@ |	rdj#                  |	«      }nt%        |«      }nt%        |«      }t        j&                  dd|«      }t        j&                  dd|«      }|j)                  «       |fS # t*        $ r}t-        d|› �d¬«       Y d }~yd }~ww xY w)NrN   rO   rR   r_   )ÚscriptÚstyler   r#   r$   r   r/   r   c                 ó.   — | xr d| j                  «       v S )NÚattr©Úlower©Úcs    r?   ú<lambda>zfetch_detail.<locals>.<lambda>p   s   € °Ò1J°vÀÇÁÃÐ7J€ r@   )Úclass_z(\d{4}-\d{1,2}-\d{1,2})é   c                 óV   — | xr& d| j                  «       v xr d| j                  «       v S )Núarticle-contentÚbodyr{   r}   s    r?   r   zfetch_detail.<locals>.<lambda>v   s0   € ¸Ò8tÐ>OÐST×SZÑSZÓS\Ð>\Ò8tÐagÐkl×krÑkrÓktÐat€ r@   c                 ó.   — | xr d| j                  «       v S )Nrƒ   r{   r}   s    r?   r   zfetch_detail.<locals>.<lambda>x   s   € ¸AÒ<`ÐBSÐWX×W^ÑW^ÓW`ÐB`€ r@   rh   r   r   Trb   rB   rA   z {2,}ú z  [ERROR] detail: ©Úflush)r/   r/   )rU   rV   rW   rX   r   rY   Ú	decomposerl   rC   Úsearchrm   Úgrouprk   ÚunwrapÚsetr7   ÚaddrE   rK   rF   rG   Ú	ExceptionÚprint)r[   r\   rq   ÚtagÚdetail_daterz   ÚmÚcontent_divrh   Ú
para_partsÚ
seen_textsrH   rY   ÚcontentÚes                  r?   Úfetch_detailr™   g   sÃ  € ð*Ü�L‰L˜¤g°rÔ:ˆØˆŒ
Ü˜QŸV™V ]Ó3ˆÙÒOÓPò 	ˆCØ�M‰M�Oð	ð ˆØ�y‰y˜Ñ'JˆyÓKˆÙÜ—	‘	Ð4°d·m±m³oÓFˆAÙØŸg™g a›j�à—i‘i Ñ.t�iÓuˆÙØŸ)™) EÑ2`˜)ÓaˆKÙà#×,Ñ,¨VÓ4ò �Ø—‘•ðð ˆJÜ›ˆJØ!×*Ñ*¨C°¨;Ó7ò )�Ø—{‘{¨�{Ó.�Ú˜D¨
Ò2Ø×%Ñ% dÔ+Ø—N‘N 4Õ(ð	)ñ
 Ø Ÿ+™+ jÓ1‘ô $ KÓ0‘ä “oˆGä—&‘&˜ F¨GÓ4ˆÜ—&‘&˜ 3¨Ó0ˆØ�}‰}‹ Ð+Ð+øÜò ÜÐ" 1 #Ð&¨dÕ3Üûðús%   ‚D/G Ä2G Ä7BG Ç	G)ÇG$Ç$G)c                  ó¾  — t        j                  t        «      } | j                  «       }t	        «       }|j                  dt        f«      D ]  }|j                  |d   «       Œ d}|j                  dt        f«      j                  «       }|r
|d   r|d   }| j                  «        t        d|› �d¬«       t        dt        |«      › �d¬«       g }d}t        d	«      D ]e  }t        |«      }t        |«      }	t        d
|dz   › dt        |	«      › d�d¬«       t        |	«      dk(  r|dz  }|dk\  r nd}|j                  |	«       Œg t        dt        |«      › �d¬«       t        j                  t        «      } | j                  «       }dx}
x}}|D �].  }|d   }|d   }|d   }||v r|dz  }Œt!        |«      \  }}|s|}|rt        |«      dk  r(t        d|d d › dt        |«      › d�d¬«       |s|dz  }Œg|s#t#        j$                  «       j'                  d«      }t)        j*                  dd|«      d d }|j-                  d«      dk(  rt/        |j1                  dd«      «      nd}|j                  dt        t2        |||||d d |f«       |
dz  }
|
dz  dk(  s�Œ| j5                  «        t        d |
› d!|› d"�d¬«       �Œ1 | j5                  «        | j                  «        t        d#d$› �d¬«       t        d%t        › �d¬«       t        dt        |«      › �d¬«       t        d&|
› �d¬«       t        d'|› �d¬«       t        d(|› �d¬«       t        d$› d¬«       y ))Nz.SELECT page_url FROM gov_raw WHERE site_name=?r   z
1900-01-01z7SELECT MAX(publish_date) FROM gov_raw WHERE site_name=?zLatest DB date: Tr‡   zExisting URLs: é   z  Page r�   z: z itemsrf   zTotal list items: r[   ri   rj   é2   z
  [SHORT] rN   z... (ú)z%Y-%m-%dz[^\d-]r/   é
   ú-z³
            INSERT OR IGNORE INTO gov_raw (site_name, source_url, page_url, title, publish_date, content, summary, date_rank)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        iô  é   z  Progress: z new / z skipr4   z2==================================================zSite: zNew: zSkipped (existing): zErrors: )Úsqlite3ÚconnectÚDB_PATHÚcursorr�   ÚexecuteÚ	SITE_NAMErŽ   ÚfetchoneÚcloser�   rn   Úranger]   ru   Úextendr™   r   ÚnowÚstrftimerC   rF   ÚcountÚintÚreplacerS   Úcommit)Úconnr~   ÚexistingÚrowÚlatest_db_dateÚ	all_itemsÚempty_pagesrZ   rp   rr   Ú	new_countÚ
skip_countÚerror_countÚitemr[   ri   rt   r—   r’   Údrs                       r?   r   r   ”   sc  € Ü�?‰?œ7Ó#€DØ�‰‹€AÜ‹u€HØ�y‰yÐIÌIÈ<ÓXò ˆØ�‰�S˜‘VÕðà!€NØ
�)‰)ÐMÔPYÈ|Ó
\×
eÑ
eÓ
g€CÙ
ˆs�1ŠvØ˜Q™ˆØ‡J�J„LÜ	Ð˜^Ð,Ð
-°TÕ:Ü	ˆOœC ›M˜?Ð
+°4Õ8à€IØ€KÜ�b“	ò 
 ˆÜ˜$ÓˆÜ˜dÓ#ˆÜ�˜˜Q™�x˜r¤# e£* ¨VÐ4¸DÕAÜˆu‹:˜Š?Ø˜1ÑˆKØ˜aÒÙàˆKØ×Ñ˜Õð
 ô 
Ðœs 9›~Ð.Ð
/°tÕ<ä�?‰?œ7Ó#€DØ�‰‹€AØ+,Ð,€IÐ,�
˜[àó RˆØ�5‰kˆØ�W‘ˆØ˜‘<ˆØ�(‰?Ø˜!‰OˆJØä+¨CÓ0Ñˆ�ÙØ"ˆKÙœ#˜g›,¨Ò+Ü�J˜u S b˜z˜l¨%´°G³¨~¸QÐ?ÀtÕLÙØ˜qÑ �ØáÜ"Ÿ,™,›.×1Ñ1°*Ó=ˆKÜ—f‘f˜Y¨¨KÓ8¸¸"Ð=ˆØ2=×2CÑ2CÀCÓ2HÈAÒ2MŒS�×$Ñ$ S¨"Ó-Ô.ÐSTˆà	�	‰	ð ô œ 3¨¨{¸GÀWÈTÈcÀ]ÐTVÐWô	Yð 	�Q‰ˆ	Ø�r‰>˜QÔØ�K‰KŒMÜ�L  ¨7°:°,¸eÐDÈD×Qð;Rð> 	‡K�K„MØ‡J�J„LÜ	ˆBˆvˆhˆ-˜tÕ$Ü	ˆF”9�+Ð
 dÕ+Ü	Ðœs 9›~Ð.Ð
/°tÕ<Ü	ˆE�)�Ð
 TÕ*Ü	Ð   Ð
-°TÕ:Ü	ˆH�[�MÐ
"¨$Õ/Ü	ˆVˆH˜TÖ"r@   Ú__main__)Ú__doc__rU   r¡   rC   Úosr   rD   r   r£   r¦   rS   rT   rW   r:   rK   r]   ru   r™   r   Ú__name__© r@   r?   ú<module>rÁ      sy   ðñó Û Û 	Û 	Ý Ý à
€Ø*€	ØH€Ø>€àð  Dð€ò*€òò6òò>+òZI#ðV ˆzÒÙ…Fð r@   