Ë
    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Z	dZ
dZdZdd	iZd
„ Zd„ Zd„ Zd„ Zedk(  rD ej                  «       Z e«         ed ej                  «       ez
  d›d�ej*                  ¬«       yy)u'  
å®‰åº†å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€ - æ”¿åºœä¿¡æ�¯å…¬å¼€ï¼ˆä¸»åŠ¨å…¬å¼€ï¼‰
https://sthjj.anqing.gov.cn/public/column/4018218?type=4
CMS: é¾™è®¯Lonsun, AJAXåˆ†é¡µ104é¡µ(~1560æ�¡)
åˆ—è¡¨API: /public/column/4018218?type=4&action=list&isJson=true&pageIndex=N&pageSize=20
è¯¦æƒ…: div#zoom.j-fontContent æ­£æ–‡
é    N)ÚBeautifulSoupzhttps://sthjj.anqing.gov.cnz1https://sthjj.anqing.gov.cn/public/column/4018218u%   å®‰åº†å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€-ä¿¡æ�¯å…¬å¼€é   z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 óŠ   ‡— g Šˆfd„}t        j                  d|| t         j                  t         j                  z  ¬«      }|‰fS )uD   ä»ŽHTMLå­—ç¬¦ä¸²ä¸­æ��å�–æ‰€æœ‰<table>æ ‡ç­¾ï¼Œç”¨å”¯ä¸€æ ‡è®°æ›¿æ�¢c                 ón   •— t        ‰«      }d|› d�}‰j                  || j                  d«      f«       |S )NÚ___TBL_Ú___r   )ÚlenÚappendÚgroup)ÚmÚidxÚkeyÚmarkerss      €ú&/root/gov_crawler/crawl_aqsthj_xxgk.pyÚreplace_tablez)extract_table_tags.<locals>.replace_table   s8   ø€ Ü�'‹lˆØ˜�u˜CÐ ˆØ�‰˜˜QŸW™W Q›ZÐ(Ô)Øˆ
ó    z<table[^>]*>.*?</table>)Úflags)ÚreÚsubÚDOTALLÚ
IGNORECASE)Úhtml_strr   Úmodifiedr   s      @r   Úextract_table_tagsr      sC   ø€ à€Gôô
 �v‰vØ"ØØÜ�i‰iœ"Ÿ-™-Ñ'ô	€Hð �WÐÐr   c                 ó>  — ddddddt        | «      dddd	d
œ}	 t        j                  t        |t        d¬«      }|j                  «        |j                  j                  d«      r|j                  «       n|j                  }g }t        |d«      }|j                  dd¬«      D ]À  }|j                  ddd¬«      }|sŒ|d   j!                  «       }	|j                  dd«      xs |j#                  d¬«      }
|
r|	sŒX|	j                  d«      r|	n	t$        › |	› �}|j                  dd¬«      }|r|j#                  d¬«      nd}|j'                  |
j!                  «       ||d œ«       ŒÂ |S # t        $ r,}t        d|› �t        j                  ¬«       g dfcY d}~S d}~ww xY w)!u   èŽ·å�–åˆ—è¡¨é¡µæ•°æ�®Ú4ÚlistÚtrueÚ3902127Ú4018218Ú20z
yyyy-MM-ddÚ50ÚpublicInfoList)ÚtypeÚactionÚisJsonÚsiteIdÚorganIdÚpageSizeÚ	pageIndexÚisDateÚ
dateFormatÚlengthÚ	labelNameé   )ÚparamsÚheadersÚtimeoutú"z  API ERROR: ©Úfiler   Núhtml.parserÚliÚclearfix)Úclass_ÚaÚtitleT)r9   Úhrefr<   Ú ©ÚstripÚhttpÚspanÚdate)r;   ÚurlrB   )ÚstrÚrequestsÚgetÚLIST_APIÚHEADERSÚraise_for_statusÚtextÚ
startswithÚjsonÚ	ExceptionÚprintÚsysÚstderrr   Úfind_allÚfindr?   Úget_textÚBASE_URLr
   )Ú
page_indexr0   ÚrÚhtmlÚeÚitemsÚsoupr7   r:   r<   r;   Úfull_urlÚ	date_spanÚdate_strs                 r   Úfetch_list_pager^   &   sŽ  € ð ØØØØØÜ˜“_ØØ"ØØ%ñ€FðÜ�L‰Lœ¨&¼'È2ÔNˆØ	×ÑÔàŸ6™6×,Ñ,¨SÔ1ˆq�v‰vŒx°q·v±vˆð
 €EÜ˜˜}Ó-€DØ�m‰m˜D¨ˆmÓ4ò RˆØ�G‰G�C ¨dˆGÓ3ˆÙØØ�‰y�‰Ó ˆØ—‘�g˜rÓ"Ò< a§j¡j°t jÓ&<ˆÙ™DØØŸ?™?¨6Ô2‘4¼8¸*ÀTÀFÐ8KˆØ—G‘G˜F¨6�GÓ2ˆ	Ù5>�9×%Ñ%¨DÐ%Ô1ÀBˆØ�‰˜uŸ{™{›}°XÀxÑPÕQðRð €Løô% ò Ü�˜a˜SÐ!¬¯
©
Õ3Ø�1ˆu�ûðús   ™A(E' Å'	FÅ0!FÆFÆFc                 ó¬  — 	 t        j                  | t        d¬«      }d|_        |j	                  «        t        |j                  d«      }d}d}|j                  d	«      }|rF|j                  d
¬«      }dD ]  }|j                  |«      }	|	dkD  sŒ|d|	 } n |j                  «       }t        j                  d|j                  «      D ]  }
|
j!                  d«      } n |s6t        j"                  d|j                  dd «      }|r|j!                  d«      }d}|j                  d¬«      xs |j%                  d«      }g }|�r(|j'                  dd
¬«      D ]®  }|d   j                  «       }t        j"                  d|t        j(                  «      sŒ<|j                  d
¬«      xs |j+                  d«      d   }|j-                  d«      r|n	t.        › |› �}|j1                  ||dœ«       d|› d|› d�}|j3                  |«       Œ° t5        |«      }t7        |«      \  }}t        |d«      }|j'                  d d!g«      D ]  }|j9                  «        Œ |j'                  g d"¢«      D ]  }|j;                  «        Œ |j'                  d#«      D ]$  }|j=                  dd$«       |j;                  «        Œ& |j'                  d%«      D ]$  }|j=                  dd&«       |j;                  «        Œ& |j'                  d'«      D ]  }|j3                  d&«       Œ |j                  dd(¬)«      }t        j>                  d*d$|«      j                  «       }|D ]  \  }}|jA                  |d$|› d$�«      }Œ |rtC        |j                  «       «      dk  rd+| › d,|xs d-› d.�}||||fS # t
        $ r.}t        d|› �t        j                  ¬«       ddg dfcY d}~S d}~ww xY w)/u   èŽ·å�–è¯¦æƒ…é¡µæ­£æ–‡r/   )r1   r2   úutf-8z  ERROR fetching detail: r4   r=   Nr6   r;   Tr>   )u"   _å®‰åº†å¸‚äººæ°‘æ”¿åºœä¿¡æ�¯å…¬å¼€u   _å®‰åº†å¸‚äººæ°‘æ”¿åºœÚ_r   z-PubDate[^>]+content="(\d{4}-\d{1,2}-\d{1,2})"é   z(\d{4}-\d{1,2}-\d{1,2})i¸  Úzoom)Úidz.j-fontContent.newscontnetr:   )r<   r<   z\.(docx?|pdf|pptx?)($|\?)ú/éÿÿÿÿr@   )rC   Únameú[z](ú)ÚscriptÚstyle)rA   ÚfontÚbÚstrongÚiÚemÚuÚpz

Údivú
ÚbrF)Ú	separatorr?   z\n{3,}z<p><a href="z">u	   æ— æ­£æ–‡z</a></p>)"rE   rF   rH   ÚencodingrI   rM   rN   rO   rP   r   rJ   rR   rS   r?   r   Úfinditerr   ÚsearchÚ
select_onerQ   r   ÚsplitrK   rT   r
   Úreplace_withrD   r   Ú	decomposeÚunwrapÚinsertr   Úreplacer	   )rC   rV   rX   rZ   Ú
full_titleÚpub_dateÚ	title_tagÚtÚsepr   r   ÚdmÚcontent_htmlrc   ÚattachmentsÚa_tagÚhÚfnameÚ
attach_urlÚmd_linkÚ	zoom_htmlÚtable_markersÚ	body_soupÚtagrr   Údru   r   Útbl_htmls                                r   Úget_contentr”   O   sÊ  € ðÜ�L‰L˜¤g°rÔ:ˆØˆŒ
Ø	×ÑÔô
 ˜Ÿ™ Ó/€DØ€JØ€Hð —	‘	˜'Ó"€IÙØ×Ñ TÐÓ*ˆØXò 	ˆCØ—&‘&˜“+ˆCØ�Q‹wØ�d�s�G�Ùð		ð
 —W‘W“Yˆ
ô �[‰[ÐIÈ1Ï6É6ÓRò ˆØ—7‘7˜1“:ˆÙðñ Ü�Y‰YÐ1°1·6±6¸%¸4°=ÓAˆÙØ—x‘x “{ˆHð €LØ�9‰9˜ˆ9ÓÒP 4§?¡?Ð3OÓ#P€Dà€KÚà—]‘] 3¨T�]Ó2ò 	,ˆEØ�f‘×#Ñ#Ó%ˆAÜ�y‰yÐ5°q¼"¿-¹-ÕHØŸ™¨T˜Ó2ÒF°a·g±g¸c³lÀ2Ñ6F�Ø"#§,¡,¨vÔ"6™Q¼x¸jÈÈÐ<L�
Ø×"Ñ"¨:¸uÑ#EÔFØ˜e˜W B z l°!Ð4�Ø×"Ñ" 7Õ+ð	,ô ˜“Iˆ	Ü#5°iÓ#@Ñ ˆ	�=ä! )¨]Ó;ˆ	Ø×%Ñ% x°Ð&9Ó:ò 	ˆCØ�M‰M�Oð	à×%Ñ%Ò&UÓVò 	ˆCØ�J‰J�Lð	à×#Ñ# CÓ(ò 	ˆAØ�H‰H�Q˜ÔØ�H‰H�Jð	ð ×#Ñ# EÓ*ò 	ˆAØ�H‰H�Q˜ÔØ�H‰H�Jð	ð ×$Ñ$ TÓ*ò 	"ˆBØ�O‰O˜DÕ!ð	"ð !×)Ñ)°B¸eÐ)ÓDˆÜ—v‘v˜i¨°Ó>×DÑDÓFˆà*ò 	L‰MˆC�Ø'×/Ñ/°°t¸H¸:ÀTÐ5JÓK‰Lð	Lñ œ3˜|×1Ñ1Ó3Ó4°rÒ9Ø% c U¨"¨ZÒ-F¸;Ð,GÀxÐPˆà˜ ;°
Ð:Ð:øôO ò ÜÐ)¨!¨Ð-´C·J±JÕ?Ø�2�r˜2ˆ~Õûðús   ‚3N Î	OÎ%#OÏOÏOc                  óº  — t        d«      } t        t        d«      }t        dt	        | «      › d|› d�t
        j                  ¬«       g }t        d|dz   «      D �]8  }|dkD  rt        |«      n| }|s �n!t        d|› dt	        |«      › d	�t
        j                  ¬«       t        |«      D ]å  \  }}t        d
|› d|dz   › d|d   d d › d�dt
        j                  ¬«       t        |d   «      \  }}}	}
|d   xs |}|
xs |d   }|j                  |d d |d   ||r|d d ndt        |d   dt        j                  |	d¬«      dœ«       t        dt	        |«      › dt	        |	«      › d�t
        j                  ¬«       t        j                  d«       Œç �Œ; |st        dt
        j                  ¬«       y d d l}d!}|j#                  |d"¬#«      }|j%                  d$«       |j%                  d%«       d }|D ]O  }	 |j%                  d&|d   d d |d'   d d( |d)   |d*   d d |d+   |d'   d|d,   f«       |j&                  d kD  r|dz  }ŒQ |j+                  «        |j%                  d.t        f«       |j+                  «        |j-                  «        t        d/|› d0t	        |«      › d1�t
        j                  ¬«       |D ]=  }t        j.                  |d,   «      |d,<   t        t        j                  |d¬«      «       Œ? d2t1        t        j                  «       «      › d3�}t3        |d4d5¬6«      5 }|D ]H  }t        j                  |d,   d¬«      |d,<   |j5                  t        j                  |d¬«      d7z   «       ŒJ 	 d d d «       t        d8|› �t
        j                  ¬«       y # t(        $ r)}t        d-|› �t
        j                  ¬«       Y d }~�ŒØd }~ww xY w# 1 sw Y   Œ]xY w)9Nrb   éh   u	   ç¬¬1é¡µ: u    æ�¡, æ€»é¡µ: ~104, çˆ¬å‰�u   é¡µr4   u   ç¬¬u   é¡µ: u    æ�¡z  [ú.z] r;   é(   z...ú )Úendr5   rC   rB   iô  r/   r=   ÚsyncedF)Úensure_ascii)r;   Úpage_urlÚcontentÚpublish_dateÚ	site_nameÚ
source_urlÚstatusrˆ   z	OK (body:z
B, attach:ri   g      à?zno datar   z/root/search.dbé<   )r2   zPRAGMA journal_mode=WALzPRAGMA synchronous=OFFz‹INSERT OR IGNORE INTO gov_raw (title, page_url, content, publish_date, site_name, source_url, status, attachments) VALUES (?,?,?,?,?,?,?,?)r�   iè  rž   rŸ   r    rˆ   z  DB ERROR: a=  
        INSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary)
        SELECT r.rowid, r.title, r.site_name, substr(r.content, 1, 500)
        FROM gov_raw r
        WHERE r.site_name = ?
        AND r.content IS NOT NULL AND r.content != ''
        AND r.rowid NOT IN (SELECT rowid FROM gov_search)
    zDB: +z / z itemsz/tmp/crawl_aqsthj_xxgk_z.jsonlÚwr`   )rw   rt   zJSONL backup: )r^   ÚminÚ	MAX_PAGESrN   r	   rO   rP   ÚrangeÚ	enumerater”   r
   Ú	SITE_NAMErL   ÚdumpsÚtimeÚsleepÚsqlite3ÚconnectÚexecuteÚtotal_changesrM   ÚcommitÚcloseÚloadsÚintÚopenÚwrite)Úitems_page1Útotal_pagesÚ	all_itemsÚpirY   ro   Úitemrž   r‚   rˆ   r�   rB   Ú	use_titler­   ÚDB_PATHÚdbÚaddedrX   Ú
jsonl_pathÚfs                       r   ÚmainrÂ   Ÿ   sÛ  € ä! !Ó$€KÜ”i Ó%€KÜ	ˆI”c˜+Ó&Ð'Ð'AÀ+ÀÈcÐ
RÔY\×YcÑYcÕdà€IÜ�A�{ Q‘Ó'ó ˆØ')¨A¢v” Ô#°;ˆÙÚÜ��B�4�uœS ›Z˜L¨Ð-´C·J±JÕ?ä  Ó'ò 	‰GˆAˆtÜ�C˜�t˜1˜Q˜q™S˜E  D¨¡M°#°2Ð$6Ð#7°sÐ;ÀÌ3Ï:É:ÕVÜ9DÀTÈ%Á[Ó9QÑ6ˆG�X˜{¨JØ˜‘<Ò+ 8ˆDØ"Ò3 d¨7¡mˆIØ×ÑØ" 4 C˜Ø  ™KØ"Ù-1  S b¡	°rÜ&Ø" 5™kØ"Ü#Ÿz™z¨+ÀEÔJñ	ô 	ô �Iœc '›l˜^¨:´c¸+Ó6FÐ5GÀqÐIÔPS×PZÑPZÕ[Ü�J‰J�s�Oò!	ðñ0 ÜˆiœcŸj™jÕ)Øó Ø€GØ	�‰˜¨"ˆÓ	-€BØ‡J�JÐ(Ô)Ø‡J�JÐ'Ô(à€EØò 7ˆð
	7Ø�J‰Jð ^Ø�g‘˜t Ð$ d¨:Ñ&6°u¸Ð&=¸tÀI¹Ø�nÑ% c rÐ*¨D°Ñ,=¸tÀJÑ?OØ˜4 Ñ.ð0ôð ×Ñ !Ò#Ø˜‘
�øð7ð ‡I�I„Kð ‡J�Jð ô ˆôð ‡I�I„KØ‡H�H„Jä	ˆE�%�˜œC 	›NÐ+¨6Ð
2¼¿¹ÕDàò 4ˆÜ"Ÿj™j¨¨mÑ)<Ó=ˆˆ]ÑÜŒd�j‰j˜¨EÔ2Õ3ð4ð
 +¬3¬t¯y©y«{Ó+;Ð*<¸FÐC€JÜ	ˆj˜#¨Ô	0ð A°AØò 	AˆDÜ"&§*¡*¨T°-Ñ-@ÈuÔ"UˆD�ÑØ�G‰G”D—J‘J˜t°%Ô8¸4Ñ?Õ@ñ	A÷Aô 
ˆN˜:˜,Ð
'¬c¯j©jÖ9øô9 ò 	7Ü�L  Ð$¬3¯:©:×6Ó6ûð	7ú÷0Að Aús&   Ç5ANÌ&AOÎ	OÎ%O	Ï	OÏOÚ__main__ztime: z.1fÚsr4   )Ú__doc__rO   Úosr   rL   rE   r«   Úbs4r   rT   rG   r©   r¦   rH   r   r^   r”   rÂ   Ú__name__Út0rN   rP   © r   r   ú<module>rË      s—   ðñ÷ )× (× (Ý à(€Ø>€Ø3€	Ø€	àÐWÐ
X€òò"&òRM;ò`Q:ðh ˆzÒØ	ˆ�‰‹€BÙ„FÙ	ˆF�9�4—9‘9“;˜r‘> #Ð& aÐ
(¨s¯z©zÖ:ð r   