Ë
    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
diZd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uÊ   
å®‰åº†å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€ - è¡Œæ”¿è®¸å�¯
https://www.anqing.gov.cn/public/column/4018218?type=4&catId=6999276&action=list
CMS: é¾™è®¯Lonsun, JSON APIåˆ†é¡µ
ä»…ä¿�ç•™ ColumnName="è¡Œæ”¿è®¸å�¯" çš„æ�¡ç›®
é    N)ÚBeautifulSoup)Úurljoinzhttps://sthjj.anqing.gov.cnz1https://sthjj.anqing.gov.cn/public/column/4018218u%   å®‰åº†å¸‚ç”Ÿæ€�çŽ¯å¢ƒå±€-è¡Œæ”¿è®¸å�¯é   u   è¡Œæ”¿è®¸å�¯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 )Nc                 ón   •— t        ‰«      }d|› d�}‰j                  || j                  d«      f«       |S )NÚ___TBL_Ú___r   )ÚlenÚappendÚgroup)ÚmÚidxÚkeyÚmarkerss      €ú&/root/gov_crawler/crawl_aqsthj_xzxk.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 œ«       ŒÂ d}t)        j*                  d!|«      }|rt-        |j/                  d"«      «      }||f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)r:   Úhrefr=   Ú ©ÚstripÚhttpÚspanÚdate)r<   ÚurlrC   z'total[Pp]age["\']?\s*[:=]\s*["\']?(\d+)é   )ÚstrÚrequestsÚgetÚLIST_APIÚHEADERSÚraise_for_statusÚtextÚ
startswithÚjsonÚ	ExceptionÚprintÚsysÚstderrr   Úfind_allÚfindr@   Úget_textÚBASE_URLr   r   ÚsearchÚintr   )Ú
page_indexr1   ÚrÚhtmlÚeÚitemsÚsoupr8   r;   r=   r<   Úfull_urlÚ	date_spanÚdate_strÚtotal_pagesr   s                   r   Úfetch_list_pagerc   %   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ð €KÜ
�	‰	Ð<¸dÓC€AÙÜ˜!Ÿ'™' !›*“oˆØ�+ÐÐøô1 ò Ü�˜a˜SÐ!¬¯
©
Õ3Ø�1ˆu�ûðús   ™A(F Æ	GÆ&!GÇGÇGc                 ó	  — 	 t        j                  | t        d¬«      }d|_        |j	                  «        t        |j                  d	«      }|j                  d
ddi¬«      }|r%|j                  d«      r|d   j                  «       }nd}|t        k7  rddg ddfS d}d}|j                  d
ddi¬«      }|r%|j                  d«      r|d   j                  «       }nY|j                  d«      }	|	rF|	j                  d¬«      }
dD ]  }|
j                  |«      }|dkD  sŒ|
d| }
 n |
j                  «       }|j                  d
ddi¬«      }|r'|j                  d«      r|d   j                  «       dd }|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¬0«      }t        j>                  d1d,|«      j                  «       }|D ]  \  }}|jA                  |d,|› d,�«      }Œ |rtC        |j                  «       «      dk  rd2| › d3|xs d4› d5�}n |r|d6z  }|D ]  } |d7| d   › d&| d8   › d'�z  }Œ ||||dfS # t
        $ r/}t        d|› �t        j                  ¬«       ddg ddfcY d}~S d}~ww xY w)9uU   èŽ·å�–è¯¦æƒ…é¡µæ­£æ–‡ï¼Œè¿”å›ž(content, pub_date, attachments, full_title, is_target)r0   )r2   r3   zutf-8z  ERROR fetching detail: r5   r>   FNr7   ÚmetaÚnameÚ
ColumnName)ÚattrsÚcontentÚArticleTitler<   Tr?   )u"   _å®‰åº†å¸‚äººæ°‘æ”¿åºœä¿¡æ�¯å…¬å¼€u   _å®‰åº†å¸‚äººæ°‘æ”¿åºœÚ_r   ÚPubDateé
   z(\d{4}-\d{1,2}-\d{1,2})i¸  rE   Úzoom)Úidz.j-fontContent.newscontnetr;   )r=   r=   z\.(docx?|pdf|pptx?)($|\?)ú/éÿÿÿÿrA   )rD   rf   ú[z](ú)ÚscriptÚstyle)rB   ÚfontÚbÚstrongÚiÚemÚuÚpz

Údivú
Úbr)Ú	separatorr@   z\n{3,}z<p><a href="z">u	   æ— æ­£æ–‡z</a></p>u   

**é™„ä»¶ï¼š**z
[rD   )"rG   rH   rJ   ÚencodingrK   rO   rP   rQ   rR   r   rL   rT   r@   ÚTARGET_COLUMNrU   r   rW   r   Ú
select_onerS   r   ÚsplitrM   rV   r   Úreplace_withrF   r   Ú	decomposeÚunwrapÚinsertr   Úreplacer
   )!rD   rZ   r\   r^   Úmeta_colÚcol_nameÚ
full_titleÚpub_dateÚ
meta_titleÚ	title_tagÚtÚsepr   Ú	meta_dateÚdmÚcontent_htmlrn   ÚattachmentsÚa_tagÚhÚfnameÚ
attach_urlÚmd_linkÚ	zoom_htmlÚtable_markersÚ	body_soupÚtagr|   Údr   r   Útbl_htmlÚatts!                                    r   Úget_contentr¢   S   s­  € ð%Ü�L‰L˜¤g°rÔ:ˆØˆŒ
Ø	×ÑÔô
 ˜Ÿ™ Ó/€Dð �y‰y˜¨°Ð'=ˆyÓ>€HÙ�H—L‘L Ô+Ø˜IÑ&×,Ñ,Ó.‰àˆØ”=Ò Ø�2�r˜2˜uÐ$Ð$à€JØ€Hð —‘˜6¨&°.Ð)A�ÓB€JÙ�j—n‘n YÔ/Ø 	Ñ*×0Ñ0Ó2‰
à—I‘I˜gÓ&ˆ	ÙØ×"Ñ"¨Ð"Ó.ˆAØ\ò �Ø—f‘f˜S“k�Ø˜“7Ø˜$˜3˜�AÙð	ð
 Ÿ™›ˆJð —	‘	˜&¨°Ð(;�	Ó<€IÙ�Y—]‘] 9Ô-Ø˜YÑ'×-Ñ-Ó/°°Ð4ˆÙÜ�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‰Ù	ØÐ+Ñ+ˆØò 	?ˆCØ˜c # f¡+ ¨b°°U±°¸AÐ>Ñ>‰Lð	?ð ˜ ;°
¸DÐ@Ð@øôs ò %ÜÐ)¨!¨Ð-´C·J±JÕ?Ø�2�r˜2˜uÐ$Õ$ûð%ús   ‚3Q Ñ	RÑ$RÑ<RÒRc                 ó”  — 	 ddl }d}|j                  |d¬«      }|j                  d«       |j                  d«       | j                  d«      xs d	dd
 }| j                  d«      xs d	dd }| j                  d«      xs d	}| j                  d«      xs d	dd }| j                  d«      xs ddd }| j                  d«      xs d}	|j                  d||||||d|	df	«       |j                  d|f«       |j	                  «        |j                  «        y# t        $ r(}
t        d|
› �t        j                  ¬«       Y d}
~
yd}
~
ww xY w)u   å†™å…¥search.db + FTSr   Nz/root/search.dbé<   )r3   zPRAGMA journal_mode=WALzPRAGMA synchronous=OFFr<   r>   éô  Úpage_urliè  ri   Úpublish_dater0   Ú	site_nameÚunknownéd   r•   z[]z›INSERT OR REPLACE INTO gov_raw (title, page_url, content, publish_date, site_name, source_url, status, attachments, script_name) VALUES (?,?,?,?,?,?,?,?,?)Úsyncedzcrawl_aqsthj_xzxk.pyzà
            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.page_url = ?
        Tz  DB ERROR: r5   F)
Úsqlite3ÚconnectÚexecuterH   ÚcommitÚcloserO   rP   rQ   rR   )Úrecordr¬   ÚDB_PATHÚdbr<   r¦   ri   r§   r¨   Úattachments_strr\   s              r   Úimport_to_dbrµ   µ   sL  € ðÛØ#ˆØ�_‰_˜W¨bˆ_Ó1ˆØ
�
‰
Ð,Ô-Ø
�
‰
Ð+Ô,à—‘˜GÓ$Ò*¨¨D¨SÐ1ˆØ—J‘J˜zÓ*Ò0¨b°%°4Ð8ˆØ—*‘*˜YÓ'Ò-¨2ˆØŸ
™
 >Ó2Ò8°b¸#¸2Ð>ˆØ—Z‘Z Ó,Ò9°	¸4¸CÐ@ˆ	Ø Ÿ*™* ]Ó3Ò;°tˆà
�
‰
ð jØ�H˜g |°YÀÈ(ÐTcÐe{Ð|ô	
ð
 	�
‰
ð ð
 ˆ[ô	ð 	�	‰	ŒØ
�‰Œ
ØøÜò Ü�˜Q˜CÐ ¤s§z¡zÕ2Üûðús   ‚DD Ä	EÄEÅEc                  óð  — t        d«      \  } }|dk(  rd}t        t        |«      }t        dt	        | «      › d|› �t
        j                  ¬«       g }t        d|dz   «      D �]j  }|dkD  rt        |«      n| |f\  }}|s �nNt        d|› dt	        |«      › d	�t
        j                  ¬«       t        |«      D �]  \  }}t        d
|› d|dz   › d|d   d d › d�dt
        j                  ¬«       t        |d   «      \  }}	}
}}|s$t        dt        › d�t
        j                  ¬«       Œp|d   xs |	}|xs |d   }|d d |d   ||r|d d ndt        t        j                  |
d¬«      dœ}t        |«      }|r|j                  |«       t        |rdnd› dt	        |«      › d�t
        j                  ¬«       t!        j"                  d «       �Œ �Œm t        d!t	        |«      › d"�t
        j                  ¬«       y )#NrE   r   éh   u	   ç¬¬1é¡µ: u    æ�¡, æ€»é¡µ: ~r5   u   ç¬¬u   é¡µ: u    æ�¡z  [ú.z] r<   é(   z...ú )Úendr6   rD   u	   SKIP (é�žrs   rC   r¥   r0   r>   F)Úensure_ascii)r<   r¦   ri   r§   r¨   r•   ÚOKÚFAILz (body:zB)g      à?u   
å®Œæˆ�: å…±å…¥åº“ u    æ�¡è¡Œæ”¿è®¸å�¯æ•°æ�®)rc   ÚminÚ	MAX_PAGESrP   r
   rQ   rR   ÚrangeÚ	enumerater¢   r‚   Ú	SITE_NAMErN   Údumpsrµ   r   ÚtimeÚsleep)r]   rb   Ú	all_itemsÚpiÚ
page_itemsrk   ry   Úitemri   r�   ÚattachsrŒ   Ú	is_targetrC   Ú	use_titler±   Úoks                    r   ÚmainrÏ   Ø   sï  € Ü(¨Ó+Ñ€Eˆ;Ø�aÒØˆÜ”i Ó-€KÜ	ˆI”c˜%“j�\ °°Ð
>ÄSÇZÁZÕPà€IÜ�A�{ Q‘Ó'ó ˆØ/1°Aªvœ¨Ô+¸EÀ;Ð;O‰ˆ
�AÙÚÜ��B�4�uœS ›_Ð-¨TÐ2¼¿¹ÕDä  Ó,ó 	‰GˆAˆtÜ�C˜�t˜1˜Q˜q™S˜E  D¨¡M°#°2Ð$6Ð#7°sÐ;ÀÌ3Ï:É:ÕVÜ@KÈDÐQVÉKÓ@XÑ=ˆG�X˜w¨
°IÙÜ˜	¤- °Ð2¼¿¹ÕDØà˜‘<Ò+ 8ˆDØ"Ò3 d¨7¡mˆIà" 4 C˜Ø  ™KØ"Ù-1  S b¡	°rÜ&Ü#Ÿz™z¨'ÀÔFñˆFô ˜fÓ%ˆBÙØ× Ñ  Ô(Ü™R‘T VÐ,¨G´C¸³L°>ÀÐDÌ3Ï:É:ÕVÜ�J‰J�sŽOò+	ðô: 
Ð ¤ Y£Ð 0Ð0FÐ
GÌcÏjÉjÖYr   Ú__main__)Ú__doc__rQ   Úosr   rN   rG   rÅ   Úbs4r   Úurllib.parser   rV   rI   rÃ   rÀ   r‚   rJ   r   rc   r¢   rµ   rÏ   Ú__name__© r   r   ú<module>r×      ss   ðñ÷ )× (× (Ý Ý  à(€Ø>€Ø3€	Ø€	Ø€àÐWÐ
X€òò +ò\_AòD òF%ZðP ˆzÒÙ…Fð r   