Ë
    è‡zjñ(  ã                   ó  — 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ed	z   Zd
ZdZdZdZ ej*                  «       Zde_        ej0                  e_        ddddœZdd„Zd„ Zd„ Zd„ Zd„ Ze dk(  r e«        yy)u*  æ˜Žå…‰å¸‚äººæ°‘æ”¿åºœ - æ”¿åŠ¡åŠ¨æ€�/é€šçŸ¥å…¬å‘Š (zwdt/tzgg) çˆ¬è™«
CMS: Lonsun (LS)
åˆ—è¡¨: ul.doc_list > li > a[href=/zwdt/tzgg/{id}.html] + span.date
åˆ†é¡µ: /content/column/160685244?pageIndex=N  (total 1254 / 63é¡µ, 20/é¡µ)
è¯¦æƒ…: meta ArticleTitle/PubDate + div.con_main (ä¿�ç•™è¡¨æ ¼HTML)
é    N©Úurljoin)ÚBeautifulSoupu   æ˜Žå…‰å¸‚-é€šçŸ¥å…¬å‘Šzcrawl_mingguang_tzgg.pyu   å®‰å¾½zhttps://www.mingguang.gov.cnz/zwdt/tzgg/index.htmlÚ	160685244é?   z/mnt/data/search.dbz-/root/gov_crawler/mingguang_tzgg_output.jsonlFzkMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languagec                 ó´  — t        |«      D ]p  }	 t        j                  j                  | t        ¬«      }t        j                  j                  ||t        ¬«      }|j                  «       j                  dd¬«      c S  y
# t        $ rN}||dz
  k(  r't        d| › d|› �t        j                  ¬	«       Y d }~ y
t        j                  d«       Y d }~ŒÆd }~ww xY w)N)Úheaders)ÚtimeoutÚcontextzutf-8Úreplace)Úerrorsé   u     [WARN] è¯·æ±‚å¤±è´¥ z: ©ÚfileÚ g      ø?)ÚrangeÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚctxÚreadÚdecodeÚ	ExceptionÚprintÚsysÚstderrÚtimeÚsleep)Úurlr   ÚretriesÚiÚreqÚrespÚes          ú)/root/gov_crawler/crawl_mingguang_tzgg.pyÚhttp_getr)   "   s¹   € Ü�7‹^ò 	ˆð	Ü—.‘.×(Ñ(¨´gÐ(Ó>ˆCÜ—>‘>×)Ñ)¨#°wÌÐ)ÓLˆDØ—9‘9“;×%Ñ% g°iÐ%Ó@Ò@ð		ð øô ò 	Ø�G˜a‘KÒÜÐ.¨s¨e°2°a°SÐ9ÄÇ
Á
ÕKÝÜ�J‰J�s�O‰Oûð		ús   �A+B Â 	CÂ	)CÂ8CÃCc                 óâ   — | j                  dd«      j                  dd«      j                  dd«      } t        j                  dd| «      } t        j                  dd| «      } | j                  «       S )u:   strip &middot;&nbsp; å®žä½“å‰�ç¼€ å’Œçœ�ç•¥å�·æˆªæ–­å�Žç¼€z&middot;r   z&nbsp;õ   Â·u   ^[\s\xa0Â·\u00b7]+z\s*\.{3,}\s*$)r   ÚreÚsubÚstrip)Útitles    r(   Úclean_titler0   0   s_   € à�M‰M˜* bÓ)×1Ñ1°(¸BÓ?×GÑGÈÐRTÓU€EÜ�F‰FÐ(¨"¨eÓ4€EÜ�F‰FÐ# R¨Ó/€EØ�;‰;‹=Ðó    c                 óú  — g }t        | d«      }|j                  dd¬«      }|s|S |j                  d«      D ]Á  }|j                  dd¬«      }|sŒ|d	   }t        j                  d
|«      sŒ5t        t        |«      }t        |j                  dd¬«      «      }|s|j                  d«      rt        |d   «      }d}	|j                  dd¬«      }
|
r|
j                  d¬«      }	|sŒ®|j                  |||	f«       ŒÃ |S )u%   ä»Žåˆ—è¡¨é¡µæ��å�– (url, title, date)úhtml.parserÚulÚdoc_list©Úclass_ÚliÚaT©Úhrefr;   z/zwdt/tzgg/\d+\.html$ú ©r.   r/   r   ÚspanÚdate)r   ÚfindÚfind_allr,   Úsearchr   ÚBASE_URLr0   Úget_textÚgetÚappend)ÚhtmlÚitemsÚsoupr4   r8   r9   r;   r"   r/   r?   Úsps              r(   Ú
parse_listrK   8   sý   € à€EÜ˜˜}Ó-€DØ	�‰�4 
ˆÓ	+€BÙØˆØ�k‰k˜$Óò -ˆØ�G‰G�C˜dˆGÓ#ˆÙØØ�‰yˆÜ�y‰yÐ1°4Ô8ØÜ”h Ó%ˆÜ˜AŸJ™J s°$˜JÓ7Ó8ˆÙ˜Ÿ™˜wœÜ  '¡
Ó+ˆEØˆØ�W‰W�V FˆWÓ+ˆÙØ—;‘; T�;Ó*ˆDÚØ�L‰L˜#˜u dÐ+Õ,ð!-ð" €Lr1   c           
      ó&  ‡‡$— t        | d«      }d}t        j                  d| «      }|rt        |j	                  d«      «      }|s0|j                  dd¬«      }|rt        |j                  d¬	«      «      }d}t        j                  d
| «      }|r|j	                  d«      }|s)t        j                  d| «      }|r|j	                  d«      }|j                  dd¬«      }	|	s*|j                  dd¬«      }
|
r|
j                  dd¬«      nd}	|	s||dg fS |	j                  dd¬«      }|r|j                  «        |	j                  dd¬«      }|r|j                  «        |	j                  d«      D ]D  }dj                  |j                  dg «      «      }d|v sd|v s	d|v sd|v sŒ5|j                  «        ŒF |	j                  d«      D ]  }|j                  «        Œ |	j                  t        j                  dt        j                  «      ¬«      D ]  }|j                  «        Œ |	}|	j                  dt        j                  d«      ¬«      D ]  }|}Œ 	 |j                  d¬«      }|sn5t        d„ |D «       «      r!t        d „ |D «       «      rt        |d!„ ¬"«      }nnŒJg }|	j                  d#d¬$«      D ]…  }|d%   }|j                  d¬	«      }t        j                  d&|«      s6d'|j!                  «       v s$d(|j!                  «       v s|j#                  d)«      sŒft%        ‰|«      }|j'                  |||f«       Œ‡ |D ]ê  \  }}}|j)                  d#|d*¬+«      }|r|n|j+                  d,«      d-   |_        |j.                  �–|j.                  j                  d.t        j                  d/«      ¬0«      D ]c  }|t1        |j.                  j2                  «      dt1        |j.                  j2                  «      j5                  |«       v sŒT|j                  «        Œe |j7                  |«       Œì |D ��ch c]  \  }}}|’Œ
 c}}Š$g }|j                  d¬«      D ]ß  }|j8                  d1k(  r|j'                  t;        |«      «       Œ-|j8                  d2v r~|j                  dd¬	«      }|sŒQ|j                  d1«      }t        ˆ$ˆfd3„|j                  d#d¬$«      D «       «      }|s|r|j'                  t;        |«      «       Œ§|j'                  |«       Œ¹|j                  dd¬	«      }|sŒÏ|j'                  |«       Œá t=        «       }g } |D ]X  }!t        j>                  d4dt        j>                  d5d|!«      «      }"|"sŒ2|"|vsŒ7|jA                  |"«       | j'                  |!«       ŒZ d6j                  | «      }#|D ]  \  }}}||#vsŒ|#d7|› d8|› d9�z  }#Œ t        j>                  d:d|#«      }#t        j>                  d;d6|#«      jC                  «       }#|||#|fS c c}}w )<u/   æ��å�– (title, date, content_html, attachments)r3   r   z/<meta\s+name="ArticleTitle"\s+content="([^"]+)"r   Úh1Ú	newstitler6   Tr=   z5<meta\s+name="PubDate"\s+content="(\d{4}-\d{2}-\d{2})u(   å�‘å¸ƒæ—¶é—´[:ï¼š]\s*(\d{4}-\d{2}-\d{2})ÚdivÚcon_mainÚwenzhangÚcolor_printsssss)ÚidNÚnewsinfor<   Úclassr   ÚbackÚbfunsÚdtcodeÚstylezdisplay\s*:\s*none)rY   z!j-fontContent|newscontnet|minh500F)Ú	recursivec              3   ó:   K  — | ]  }|j                   d k(  –— Œ y­w)rO   N)Úname©Ú.0Úchs     r(   ú	<genexpr>z!extract_detail.<locals>.<genexpr>�   s   è ø€ Ò3 Bˆr�w‰w˜%ÕÑ3ùs   ‚c              3   ód   K  — | ](  }|j                  d «      xs |j                  d«      –— Œ* y­w)ÚpÚtableN)r@   r]   s     r(   r`   z!extract_detail.<locals>.<genexpr>�   s+   è ø€ Ò;pÐac¸B¿G¹GÀC»LÒ<\ÈBÏGÉGÐT[ÓL\Ó<\Ñ;pùs   ‚.0c                 ó:   — t        | j                  dd¬«      «      S )Nr   Tr=   )ÚlenrD   )Úds    r(   ú<lambda>z extract_detail.<locals>.<lambda>�   s   € ´c¸!¿*¹*ÀRÈt¸*Ó:TÓ6U€ r1   )Úkeyr9   r:   r;   z6(?i)\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|et|ofd)(\?|$)Údownloadr   u   é™„ä»¶Ú_blank)r;   Útargetú/éÿÿÿÿÚimgz(?i)\.(gif|png|jpg|jpeg))Úsrcrc   )rb   rO   rM   Úh2Úh3r4   Úolr8   c              3   óD   •K  — | ]  }t        ‰|d    «      ‰v r|–— Œ y­w)r;   Nr   )r^   r9   Úattached_hrefsÚpage_urls     €€r(   r`   z!extract_detail.<locals>.<genexpr>²   s,   øè ø€ ò  ØÜ˜8 Q v¡YÓ/°>ÑAô ñ ùs   ƒ ú\s+ú<[^>]+>z

z

<p><a href="z" target="_blank">z</a></p>u   æ‰“å�°æœ¬é¡µ[^\n]*z\n{3,})"r   r,   rB   r0   Úgroupr@   rD   Ú	decomposerA   ÚjoinrE   ÚcompileÚIÚallÚanyÚmaxÚlowerÚ
startswithr   rF   Únew_tagÚsplitÚstringÚparentÚlistÚcontentsÚindexÚreplace_withr\   ÚstrÚsetr-   Úaddr.   )%rG   ru   rI   r/   ÚmtrM   r?   ÚmpÚdmÚcmrQ   Únirf   ÚclsÚsÚhÚcontent_boxÚcandÚchildrenÚattachmentsr9   r;   ÚtxtÚabs_urlÚnew_aÚsibÚ_ÚpartsÚelÚinner_tablesÚel_has_attachÚseenÚfinal_partsrb   rh   Úcontentrt   s%    `                                  @r(   Úextract_detailr¥   S   sé  ù€ ä˜˜}Ó-€Dð €EÜ	�‰ÐEÀtÓ	L€BÙ	Ü˜BŸH™H Q›KÓ(ˆÙØ�Y‰Y�t KˆYÓ0ˆÙÜ §¡°$ Ó 7Ó8ˆEð €DÜ	�‰ÐKÈTÓ	R€BÙ	Ø�x‰x˜‹{ˆÙÜ�Y‰YÐBÀDÓIˆÙØ—8‘8˜A“;ˆDð 
�‰�5 ˆÓ	,€BÙØ—9‘9˜U¨:�9Ó6ˆÙ<DˆX�]‰]˜5Ð%7ˆ]Ô8È$ˆÙØ�d˜B Ð"Ð"ð 
�‰�˜kˆÓ	*€BÙ	Ø
�‰ŒØ	�‰�˜zˆÓ	*€BÙ	Ø
�‰Œà�[‰[˜Óò ˆØ�h‰h�q—u‘u˜W bÓ)Ó*ˆØ�c‰>˜V s™]¨g¸©nÀÈCÂØ�K‰K�Mðð
 �[‰[˜Ó!ò ˆØ	�‰�ðð �[‰[œrŸz™zÐ*?ÄÇÁÓFˆ[ÓGò ˆØ	�‰�ðð €KØ—‘˜E¬"¯*©*Ð5YÓ*Z�Ó[ò ˆØ‰ðð Ø×'Ñ'°%Ð'Ó8ˆÙØÜÑ3¨(Ô3Ô3¼Ñ;pÐgoÔ;pÔ8pÜ˜hÑ,UÔV‰Kàð ð €KØ�[‰[˜ 4ˆ[Ó(ò 2ˆØ�‰yˆØ�j‰j˜tˆjÓ$ˆÜ�9‰9ÐNÐPTÔUÐYcÐgk×gqÑgqÓgsÑYsÐw}ð  BF÷  BLñ  BLó  BNñ  xNð  RU÷  R`ñ  R`ð  aiõ  RjÜ˜h¨Ó-ˆGØ×Ñ  3¨Ð0Õ1ð2ð 'ò ‰ˆˆ3�Ø—‘˜S w°x�Ó@ˆÙ!‘s w§}¡}°SÓ'9¸"Ñ'=ˆŒà�8‰8ÐØ—x‘x×(Ñ(¨´B·J±JÐ?ZÓ4[Ð(Ó\ò $�Øœ$˜qŸx™x×0Ñ0Ó1Ð2S´4¸¿¹×8IÑ8IÓ3J×3PÑ3PÐQRÓ3SÐTÒTØ—M‘M•Oð$ð 	
�‰�uÕðð 4?×?¡- ! Q¨’gÓ?€Nð €EØ×"Ñ"¨UÐ"Ó3ò "ˆØ�7‰7�gÒØ�L‰Lœ˜R›Õ!Ø�W‰WÐHÑHà—+‘+˜b¨�+Ó-ˆCÙØØŸ;™; wÓ/ˆLÜô  ØŸ;™; s°˜;Ó6ô ó ˆMñ ™}Ø—‘œS ›WÔ%ØØ�L‰L˜Õà—+‘+˜b¨�+Ó-ˆCÚØ—‘˜SÕ!ð)"ô. ‹5€DØ€KØò "ˆÜ�f‰f�V˜R¤§¡¨
°B¸Ó!:Ó;ˆÚ�3˜d’?Ø�H‰H�SŒMØ×Ñ˜qÕ!ð	"ð �k‰k˜+Ó&€GØ&ò S‰ˆˆ3�Ø˜'Ò!ØÐ)¨'¨Ð2DÀSÀEÈÐRÑR‰GðSô
 �f‰fÐ*¨B°Ó8€GÜ�f‰f�Y ¨Ó0×6Ñ6Ó8€GØ�$˜ Ð,Ð,ùóY @s   Ð.Xc                  ó  — d} t         j                  dd  }d}|t        |«      k  ru||   }|j                  d«      rt	        |j                  dd«      d   «      } n,|dk(  r'|dz   t        |«      k  rt	        ||dz      «      } |dz  }|dz  }|t        |«      k  rŒut        j                  t        d¬«      }|j                  «       }d}d}d}t        d| dz   «      D �]ä  }	|	dk(  rt        }
nt        › dt        › d	|	› �}
t        |
«      }|s t        d
|	› d�t         j                   ¬«       ŒOt#        |«      }t        d|	› dt        |«      › d�«       |D �]j  \  }}}|j%                  d|f«       |j'                  «       r|dz  }Œ1t        |«      }|s|dz  }ŒDt)        ||«      \  }}}}|r1t        t+        j,                  dd|«      j/                  «       «      dk  r|dz  }ŒŽ|s|}|s|}t+        j,                  dd|«      d d }t+        j,                  dd|«      j/                  «       }d|v rdnd}	 |j%                  d||||||t0        t2        t4        |df«      }|j6                  }|j%                  d||t0        |f«       |j9                  «        |dz  }t        d|› d|d d › �«       t=        j>                  d«       �Œm �Œç |jA                  «        t        d|› d|› d |› d!||z   |z   › �«       y # t        j:                  $ r |dz  }Y Œcw xY w)"Nr   r   z--pages=ú=z--pagesé   )r   z/content/column/z?pageIndex=u     [WARN] ç¬¬u   é¡µèŽ·å�–å¤±è´¥, è·³è¿‡r   u     ç¬¬u   é¡µ: æ‰¾åˆ° u    æ�¡z'SELECT id FROM gov_raw WHERE page_url=?rw   r   é
   éÈ   rv   r<   z<tablezªINSERT INTO gov_raw (title, summary, content, page_url, source_url, publish_date, site_name, script_name, group_name, has_table, date_rank) VALUES (?,?,?,?,?,?,?,?,?,?,?)zTINSERT OR IGNORE INTO gov_search (rowid, title, site_name, summary) VALUES (?,?,?,?)z    [z] é-   gš™™™™™Ù?u	   
æ–°å¢ž: u
     é‡�å¤�: u     è¿‡çŸ­/404: u
     æ€»è®¡: )!r   Úargvre   r�   Úintrƒ   Úsqlite3ÚconnectÚDB_PATHÚcursorr   Ú
LIST_FIRSTrC   Ú	COLUMN_IDr)   r   r   rK   ÚexecuteÚfetchoner¥   r,   r-   r.   Ú	SITE_NAMEÚSCRIPT_NAMEÚ
GROUP_NAMEÚ	lastrowidÚcommitÚIntegrityErrorr    r!   Úclose)Ú	max_pagesÚargsr$   r9   ÚconnÚcÚ	total_newÚ	total_dupÚ
total_skipÚpageÚlist_urlrG   rH   r"   r/   r?   ÚdhtmlÚd_titleÚd_dater¤   r˜   ÚsummaryÚ	has_tableÚcurÚrids                            r(   ÚmainrÍ   Ô   s1  € Ø€IÜ�8‰8�A�Bˆ<€DØ	€AØ
Œc�$‹iŠ-Ø�‰GˆØ�<‰<˜
Ô#Ü˜AŸG™G C¨›O¨AÑ.Ó/‰IØ�)Š^  A¡¬¨D«	Ò 1Ü˜D  Q¡™KÓ(ˆIØ�‰FˆAØ	ˆQ‰ˆð Œc�$‹i‹-ô �?‰?œ7¨BÔ/€DØ�‰‹€AØ€IØ€IØ€Jä�a˜ Q™Ó'ó +ˆØ�1Š9Ü!‰Hä"˜Ð#3´I°;¸kÈ$ÈÐPˆHÜ˜Ó!ˆÙÜ�L  Ð&=Ð>ÄSÇZÁZÕPØÜ˜4Ó ˆÜ��d�V˜<¬¨E«
 |°4Ð8Ô9Ø %ó  	ÑˆC�˜Ø�I‰IÐ?À#ÀÔHØ�z‰zŒ|Ø˜Q‘�	ØÜ˜S“MˆEÙØ˜a‘�
ØÜ4BÀ5È#Ó4NÑ1ˆG�V˜W kÙœc¤"§&¡&¨°R¸Ó"A×"GÑ"GÓ"IÓJÈRÒOØ˜a‘�
ØÙØ�ÙØ�Ü—f‘f˜Z¨¨WÓ5°d°sÐ;ˆGÜ—f‘f˜V S¨'Ó2×8Ñ8Ó:ˆGØ%¨Ñ0™°aˆIðØ—i‘ið AØ˜g w°°S¸&Ä)Ì[ÔZdÐfoÐqrÐsóu�ð —m‘m�Ø—	‘	ÐpØ ¬°GÐ<ô>à—‘”Ø˜Q‘�	Ü˜˜f˜X R¨°°¨ ~Ð6Ô7ô �J‰J�sŽOòA 	ð+ðZ 	‡J�J„LÜ	ˆJ�y�k ¨I¨;°nÀZÀLÐPZÐ[dÐenÑ[nÐoyÑ[yÐZzÐ
{Õ|øô ×)Ñ)ò Ø˜Q‘’	ðús   È0A8K1Ë1LÌLÚ__main__)é   é   )!Ú__doc__r   r,   r    r®   ÚsslÚurllib.requestr   Úurllib.parser   Úbs4r   r¶   r·   r¸   rC   r²   r³   ÚTOTAL_PAGESr°   ÚOUTPUT_FILEÚcreate_default_contextr   Úcheck_hostnameÚ	CERT_NONEÚverify_moder   r)   r0   rK   r¥   rÍ   Ú__name__© r1   r(   ú<module>rÞ      s¶   ðñ÷ 3× 2× 2Ý  Ý à$€	Ø'€Ø€
Ø)€ØÐ/Ñ/€
Ø€	Ø€Ø
€Ø=€à €c× Ñ Ó"€Ø€Ô Ø—-‘-€„ð @ØOØ0ñ€óòòò6~-òBA}ðH ˆzÒÙ…Fð r1   