Ë
    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gZd	„ 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://cangyuan.gov.cn/zfxxgk_cyx_sthjj/hjbh.html
CMS: è‡ªå®šä¹‰, é�™æ€�HTMLåˆ†é¡µ
åˆ—è¡¨: <dl class="xxgk-textList1 line1"><dd><a title="å®Œæ•´æ ‡é¢˜" href="/zfxxgk_cyx_sthjj/artview/263/{ID}.html">æ ‡é¢˜</a><span>æ—¥æœŸ</span>
åˆ†é¡µ: hjbh.html(1) + hjbh/index_N.html(2-8), 106æ�¡
è¯¦æƒ…: div.xxgk-articleBox
SSLä¿®å¤�: --curves prime256v1
é    N)ÚBeautifulSoupzhttps://cangyuan.gov.cnz2https://cangyuan.gov.cn/zfxxgk_cyx_sthjj/hjbh.htmlu"   æ²§æº�ä½¤æ—�è‡ªæ²»åŽ¿-çŽ¯å¢ƒä¿�æŠ¤é   zHUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c           	      ój   — 	 t        j                  dddddd| gddd¬	«      }|j                  S #  Y y
xY w)u,   ä½¿ç”¨curlå¸¦--curves prime256v1èŽ·å�–é¡µé�¢Úcurlz-sLz
--max-timeÚ20z--curvesÚ
prime256v1Té   )Úcapture_outputÚtextÚtimeoutÚ )Ú
subprocessÚrunÚstdout)ÚurlÚresults     ú(/root/gov_crawler/crawl_cangyuan_hjbh.pyÚcurl_getr      sD   € ðÜ—‘Ø�U˜L¨$°
¸LÈ#ÐNØ d°Bô
ˆð �}‰}ÐøðÙús   ‚+. ®2c                 óŠ   ‡— 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      €r   Ú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                 ó–  — t        | «      }|rt        |«      dk  r t        d| › �t        j                  ¬«       g S g }t        |d«      }|j                  d«      }|st        dt        j                  ¬«       |S |j                  d«      D ]»  }|j                  dd	¬
«      }|sŒ|d   j                  «       }|j                  dd«      j                  «       xs |j                  d	¬«      }|sŒc|j                  d«      r|n	t        › |› �}	|j                  d«      }
|
r|
j                  d	¬«      nd}|j                  ||	|dœ«       Œ½ |S )u   èŽ·å�–åˆ—è¡¨é¡µéè  z  EMPTY page: ©Úfileúhtml.parserzdl.xxgk-textList1z  NO list dl foundÚddÚaT©Úhrefr2   Útitler   ©ÚstripÚhttpÚspan)r3   r   Údate)r   r   ÚprintÚsysÚstderrr   Ú
select_oneÚfind_allÚfindr5   ÚgetÚget_textÚ
startswithÚBASE_URLr   )Úpage_urlÚhtmlÚitemsÚsoupÚdlr/   r0   r2   r3   Úfull_urlÚ	date_spanÚdate_strs               r   Úfetch_list_pagerK   4   s5  € ä�HÓ€DÙ”3�t“9˜tÒ#Ü�˜x˜jÐ)´·
±
Õ;Øˆ	à€EÜ˜˜}Ó-€DØ	�‰Ð,Ó	-€BÙÜÐ"¬#¯*©*Õ5Øˆà�k‰k˜$Óò JˆØ�G‰G�C˜dˆGÓ#ˆÙØØ�‰y�‰Ó ˆØ—‘�g˜rÓ"×(Ñ(Ó*ÒD¨a¯j©j¸t¨jÓ.DˆÙØØŸ?™?¨6Ô2‘4¼8¸*ÀTÀFÐ8KˆØ—G‘G˜F“Oˆ	Ù5>�9×%Ñ%¨DÐ%Ô1ÀBˆØ�‰˜u¨X¸xÑHÕIðJð €Lr!   c                 ó  — t        | «      }|rt        |«      dk  rddg dfS t        |d«      }d}d}|j                  d«      }|r|j	                  d¬«      }t        j                  d|dd	 «      }|r|j                  d
«      }d}|j                  d«      }|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        › |› �}|	j                  ||dœ«       d|› d|› d�}|
j!                  |«       Œ° t#        |«      }t%        |«      \  }}t        |d«      }|j                  ddg«      D ]  }|j'                  «        Œ |j                  g d¢«      D ]  }|j)                  «        Œ |j                  d«      D ]$  }|j+                  dd«       |j)                  «        Œ& |j                  d«      D ]$  }|j+                  dd«       |j)                  «        Œ& |j                  d «      D ]  }|j!                  d«       Œ |j	                  dd!¬"«      }t        j,                  d#d|«      j                  «       }|D ]  \  }}|j/                  |d|› d�«      }Œ |rt        |j                  «       «      d$k  rd%| › d&|xs d'› d(�}|||	|fS ))u   èŽ·å�–è¯¦æƒ…é¡µæ­£æ–‡r+   r   r.   r3   Tr4   z(\d{4}-\d{1,2}-\d{1,2})Ni¸  é   zdiv.xxgk-articleBoxzdiv.xxgk-singleArticler0   r1   r2   z\.(docx?|pdf|pptx?|xlsx?)($|\?)ú/éÿÿÿÿr6   )r   Únameú[z](ú)ÚscriptÚstyle)r7   ÚfontÚbÚstrongÚiÚemÚuÚpr   z

Údivú
ÚbrF)Ú	separatorr5   z\n{3,}é   z<p><a href="z">u	   æ— æ­£æ–‡z</a></p>)r   r   r   r>   r@   r#   Úsearchr   r<   r=   r5   r&   ÚsplitrA   rB   r   Úreplace_withÚstrr)   Ú	decomposeÚunwrapÚinsertr$   Úreplace)r   rD   rF   Ú
full_titleÚpub_dateÚ	title_tagÚdmÚcontent_htmlÚbodyÚattachmentsÚa_tagÚhÚfnameÚ
attach_urlÚmd_linkÚ	body_htmlÚtable_markersÚ	body_soupÚtagr[   Údr^   r   Útbl_htmls                           r   Úget_contentr{   R   s  € ä�C‹=€DÙ”3�t“9˜tÒ#Ø�2�r˜2ˆ~Ðä˜˜}Ó-€DØ€JØ€Hð —	‘	˜'Ó"€IÙØ×'Ñ'¨dÐ'Ó3ˆ
ô 
�‰Ð-¨t°E°T¨{Ó	;€BÙ	Ø—8‘8˜A“;ˆð €LØ�?‰?Ð0Ó1€DÙØ�‰Ð7Ó8ˆà€KÚà—]‘] 3¨T�]Ó2ò 	,ˆEØ�f‘×#Ñ#Ó%ˆAÜ�y‰yÐ;¸QÄÇÁÕNØŸ™¨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ˆà˜ ;°
Ð:Ð:r!   c                  ó$  — dd l } t        g}t        dt        dz   «      D ]  }|j	                  d|› d�«       Œ g }t        |d«      D �]2  \  }}t        |«      }|sŒ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«       Œç �Œ5 |st        dt        j                  ¬	«       y 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.|› d/t        |«      › d0�t        j                  ¬	«       |D ]=  }t        j.                  |d+   «      |d+<   t        t        j                  |d¬«      «       Œ? y # t(        $ r)}t        d,|› �t        j                  ¬	«       Y d }~�Œ4d }~ww xY w)1Nr   é   rM   z4https://cangyuan.gov.cn/zfxxgk_cyx_sthjj/hjbh/index_z.htmlu   ç¬¬u   é¡µ: u    æ�¡r,   z  [ú.z] r3   é(   z...ú )Úendr-   r   r8   iô  r`   r   ÚsyncedF)Úensure_ascii)r3   rC   ÚcontentÚpublish_dateÚ	site_nameÚ
source_urlÚstatusro   z	OK (body:z
B, attach:rR   g      à?zno dataz/root/search.dbé<   )r   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 (?,?,?,?,?,?,?,?)rC   r+   r„   r…   r†   ro   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 items)Úsqlite3ÚLIST_URLÚrangeÚ	MAX_PAGESr   Ú	enumeraterK   r9   r   r:   r;   r{   Ú	SITE_NAMEÚjsonÚdumpsÚtimeÚsleepÚconnectÚexecuteÚtotal_changesÚ	ExceptionÚcommitÚcloseÚloads)rŠ   Ú	page_urlsÚpiÚ	all_itemsrC   rE   rX   Úitemr„   rj   ro   ri   r8   Ú	use_titleÚDB_PATHÚdbÚaddedÚes                     r   Úmainr¤   –   s6  € Ûô �
€IÜ�A”y 1‘}Ó%ò [ˆØ×ÑÐOÐPRÈtÐSXÐYÕZð[ð €IÜ! )¨QÓ/ó ‰ˆˆHÜ Ó)ˆÙØÜ��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øô% ò 	7Ü�L  Ð$¬3¯:©:×6Ó6ûð	7ús   ÇAKË	LË&L
Ì
LÚ__main__ztime: z.1fÚsr,   )Ú__doc__r:   Úosr#   r�   r   r’   Úbs4r   rB   r‹   r�   r�   ÚHEADERSr   r)   rK   r{   r¤   Ú__name__Út0r9   r;   © r!   r   ú<module>r®      s˜   ðñ÷ +× *× *Ý à$€Ø?€Ø0€	Ø€	àUÐ
V€ò	òò"ò<A;òHJ4ðZ ˆzÒØ	ˆ�‰‹€BÙ„FÙ	ˆF�9�4—9‘9“;˜r‘> #Ð& aÐ
(¨s¯z©zÖ:ð r!   