Ë
    ¸¬ujT  ã                   óê   — 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Zddl	Z	ddl
m
Z
  ej                  «       Zde_        ej                  e_        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)u3   Crawler for dancheng.gov.cn - éƒ¸åŸŽåŽ¿ç”Ÿæ€�çŽ¯å¢ƒé    N)ÚdatetimeFzwww.dancheng.gov.cnÚdanchengz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z/root/search.dbé   c                 óò   — t         j                  j                  dt        z   | z   t        ¬«      }t         j                  j                  |t        d¬«      }|j                  «       j                  dd¬«      }|S )Núhttps://)Úheadersé   )ÚcontextÚtimeoutzutf-8Úreplace)Úerrors)	ÚurllibÚrequestÚRequestÚBASE_DOMAINÚHEADERSÚurlopenÚssl_ctxÚreadÚdecode)ÚurlÚreqÚrespÚhtmls       ú#/root/gov_crawler/crawl_dancheng.pyÚfetchr      s`   € Ü
�.‰.×
 Ñ
  ¬kÑ!9¸CÑ!?ÌÐ
 Ó
Q€CÜ�>‰>×!Ñ! #¬wÀÐ!ÓC€DØ�9‰9‹;×Ñ˜g¨iÐÓ8€DØ€Kó    c                 óî  — t        | «      }t        j                  d|«      }|r|j                  d«      j	                  «       nd}|sFt        j                  d|t        j
                  «      }|r|j                  d«      j	                  «       }|skt        j                  d|t        j
                  «      }|rD|j                  d«      j	                  «       }t        j                  dd|«      j	                  «       }t        j                  d|«      }|r|j                  d«      nd}|s+t        j                  d|«      }|r|j                  d«      nd}t        j                  d	|«      }	|	r|	j                  d«      j	                  «       nd}
|
s9t        j                  d
|«      }|r|j                  d«      j	                  «       nd}
t        j                  d|t        j
                  «      }|r|j                  d«      nd}|s:t        j                  d|t        j
                  «      }|r|j                  d«      nd}|}t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|t        j                  ¬«      }t        j                  dd|t        j                  ¬«      }t        j                  dd|t        j                  ¬«      }|j                  d«      }g }|D ]Z  }|j	                  «       }t        j                  d|t        j                  «      r|j                  |«       ŒJ|j                  |«       Œ\ dj                  |«      }t        j                  dd|«      }t        j                  dd|«      }|j	                  «       }d|v sd |v r	 |||
||fS )!z%Fetch and extract detail page contentz+<meta name="ArticleTitle" content="([^"]*)"é   Ú z(<div class="cms-article-tit">(.*?)</div>z<title>(.*?)</title>u   \s*_éƒ¸åŸŽåŽ¿äººæ°‘æ”¿åºœ\s*$z1<meta name="PubDate" content="(\d{4}-\d{2}-\d{2})u   æ—¶é—´ï¼š\s*(\d{4}-\d{2}-\d{2})z,<meta name="ContentSource" content="([^"]*)"u   æ�¥æº�ï¼š\s*([^<]+)u   éƒ¸åŸŽåŽ¿äººæ°‘æ”¿åºœzC<div class="article-detail" id="articleDetail">(.*?)</div>\s*</div>z,id="articleDetail"[^>]*>(.*?)</div>\s*</div>z<p[^>]*>ú
z</p>z	<br\s*/?>z
<div[^>]*>z</div>zG</?(?:span|font|strong|b|em|i|u|a|s|style|link|meta|o:p|h[1-6])\b[^>]*>)Úflagsz+<(table|tr|td|th|tbody|thead|tfoot)\b[^>]*>z<\1>z%</(table|tr|td|th|tbody|thead|tfoot)>z</\1>z*^</?(?:table|tbody|thead|tfoot|tr|td|th)>$z&nbsp;ú z\n\s*\n+z

z<table>z<table )r   ÚreÚsearchÚgroupÚstripÚDOTALLÚsubÚIÚsplitÚmatchÚappendÚjoin)Ú
detail_urlr   ÚtÚtitleÚt2Út3ÚdÚpub_dateÚd2ÚsÚsourceÚs2ÚcÚcontent_htmlÚc2Úcontent_textÚlinesÚresult_linesÚlineÚstrippeds                       r   Úextract_detailrB      sK  € ä�Ó€Dä
�	‰	Ð@À$ÓG€AÙ"#ˆA�G‰G�A‹J×ÑÔ¨€EÙÜ�Y‰YÐBÀDÌ"Ï)É)ÓTˆÙØ—H‘H˜Q“K×%Ñ%Ó'ˆEÙÜ�Y‰YÐ.°´b·i±iÓ@ˆÙØ—H‘H˜Q“K×%Ñ%Ó'ˆEÜ—F‘FÐ;¸RÀÓG×MÑMÓOˆEä
�	‰	ÐFÈÓM€AÙˆq�w‰w�qŒz B€HÙÜ�Y‰YÐ9¸4Ó@ˆÙ"$�2—8‘8˜A”;¨"ˆä
�	‰	ÐAÀ4ÓH€AÙ#$ˆQ�W‰W�Q‹Z×ÑÔ¨"€FÙÜ�Y‰YÐ-¨tÓ4ˆÙ(*�—‘˜!“×"Ñ"Ô$Ð0Gˆä
�	‰	ÐXÐZ^Ô`b×`iÑ`iÓj€AÙ!"�1—7‘7˜1”:¨€LÙÜ�Y‰YÐFÈÌbÏiÉiÓXˆÙ&(�r—x‘x ”{¨bˆð  €Lô —6‘6˜+ t¨\Ó:€LÜ—6‘6˜' 4¨Ó6€LÜ—6‘6˜,¨¨lÓ;€LÜ—6‘6˜-¨¨|Ó<€LÜ—6‘6˜) T¨<Ó8€Lô —6‘6ÐdÐfhÐjvô  A÷  Cñ  Cô  D€Lô —6‘6ÐHÈ'ÐS_Ôgi×gkÑgkÔl€LÜ—6‘6ÐBÀHÈlÔbd×bfÑbfÔg€Lð ×Ñ˜tÓ$€EØ€LØò &ˆØ—:‘:“<ˆä�8‰8ÐAÀ8ÌRÏTÉTÔRØ×Ñ Õ)à×Ñ Õ%ð&ð —9‘9˜\Ó*€Lô —6‘6˜) S¨,Ó7€LÜ—6‘6˜+ v¨|Ó<€LØ×%Ñ%Ó'€Lð �LÑ  I°Ñ$=ð 	à�(˜F L°,Ð>Ð>r   c                  óJ  — t        j                  t        «      } | j                  «       }d}d}t	        dt
        dz   «      D �]¨  }d|z  }t        dt        j                  «       j                  d«      |fz  «       	 t        |«      }t        j                  d|t        j                   «      }t        d	t#        |«      z  «       |st        d
«        �n|D �]  \  }	}
}}dt$        z   |	z   }|
j'                  «       }|j)                  d|f«       |j+                  «       r|dz  }ŒN	 t-        |	«      \  }}}}}|s|}|s|}|rt#        |«      dk  rt        d|	dd  z  «       |dz  }Œ�t#        |«      dkD  r|d d n|}|j)                  d||||||t.        df«       |j0                  dkD  r|dz  }t        d|	dd  ›d|d d ›�«       | j3                  «        t        j                  d«       �Œ �Œ« | j7                  «        t        d«       t        d||fz  «       y # t        $ r0}t        d||fz  «       t        j                  d«       Y d }~�Œd }~ww xY w# t        $ rD}t        d|	dd  ›d|›�«       | j5                  «        t        j                  d«       Y d }~�ŒÈd }~ww xY w)Nr   r   z7/sitesources/dcx/page_pc/zwgk/zdly/hjbhxxgk/list%d.htmlz[%s] Fetching page %d...z%H:%M:%Sz  ERROR fetching page %d: %sé   zÝ<div class="colRightOne">\s*<a href="(/sitesources/dcx/page_pc/zwgk/zdly/hjbhxxgk/article[^"]+\.html)"[^>]*title="([^"]*)"[^>]*>.*?<div class="pictext">(.*?)</div>.*?<div class="artpub">\s*<font>(\d{4}-\d{2}-\d{2})</font>z  Found %d itemsz  No more items, stoppingr   z)SELECT id FROM gov_raw WHERE page_url = ?é2   z  SKIP %s: empty contentiìÿÿÿi,  z�INSERT OR IGNORE INTO gov_raw (page_url, source_url, title, publish_date, content, summary, site_name, category) VALUES (?, ?, ?, ?, ?, ?, ?, ?)u   çŽ¯è¯„å…¬ç¤ºz  + z: g333333Ó?z  ERROR detail z
=== Done ===zNew: %d, Skipped: %d)Úsqlite3ÚconnectÚDB_PATHÚcursorÚrangeÚ	MAX_PAGESÚprintr   ÚnowÚstrftimer   Ú	ExceptionÚtimeÚsleepr$   Úfindallr(   Úlenr   r'   ÚexecuteÚfetchonerB   Ú	SITE_NAMEÚrowcountÚcommitÚrollbackÚclose)Úconnr:   Ú	total_newÚ
total_skipÚpageÚlist_urlr   ÚeÚitemsÚhrefÚ
title_attrÚpictextÚdate_strÚpage_urlr1   Údetail_titler5   r8   r=   Ú_Úsummarys                        r   Úmainrj   g   s’  € Ü�?‰?œ7Ó#€DØ�‰‹€AØ€IØ€Jä�aœ Q™Ó'ó 9ˆØLÈtÑSˆÜÐ(¬H¯L©L«N×,CÑ,CÀJÓ,OÐQUÐ+VÑVÔWð	Ü˜“?ˆDô —
‘
ð mØ”"—)‘)ó
ˆô 	Ð ¤3 u£:Ñ-Ô.ÙäÐ-Ô.Úà38ó #	Ñ/ˆD�*˜g xØ!¤KÑ/°$Ñ6ˆHØ×$Ñ$Ó&ˆEð �I‰IÐAÀHÀ;ÔOØ�z‰zŒ|Ø˜a‘�
ØðÜBPÐQUÓBVÑ?�˜h¨°¸aÙ#Ø#(�LÙØ'�HÙ#¤s¨<Ó'8¸2Ò'=ÜÐ4°t¸C¸D°zÑAÔBØ !‘O�JØä03°LÓ0AÀCÒ0G˜, t¨Ñ,È\�Ø—	‘	ð gØ˜x¨°xÀÈwÔXaÐcqÐrôð —:‘: ’>Ø ‘N�IÝ¨$¨s¨tª*°lÀ3ÀBÑ6GÐHÔIØ—‘”Ü—
‘
˜3–ò=#	ð-9ðv 	‡J�J„LÜ	Ð
ÔÜ	Ð
  I¨zÐ#:Ñ
:Õ;øôo ò 	ÜÐ0°D¸!°9Ñ<Ô=Ü�J‰J�qŒMÝûð	ûô^ ò Ý°°c°d²¹QÐ?Ô@Ø—‘”Ü—
‘
˜1”Ýûð	ús7   Á<HÄ$?IÅ$BIÈ	IÈ"%IÉIÉ	J"É9JÊJ"Ú__main__)Ú__doc__Úurllib.requestr   Úurllib.errorÚsslr$   rF   ÚosÚsysrP   r   Úcreate_default_contextr   Úcheck_hostnameÚ	CERT_NONEÚverify_moder   rV   r   rH   rK   r   rB   rj   Ú__name__© r   r   ú<module>rx      sˆ   ðá 9ß D× D× D× DÝ à
$ˆ#×
$Ñ
$Ó
&€Ø€Ô Ø—m‘m€Ô à#€Ø€	àð  Dð€ð €Ø€	òòL?ò\C<ðJ ˆzÒÙ…Fð r   