Ë
    ¸¬uj;  ã                   ó  — 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  ej                  «       Z
de
_        ej                  e
_        dZdZdZdZd	Zd
Zdej(                  v Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u¯   Crawler for ä½›å±±å¸‚ä¸‰æ°´åŒº-å…¬å‘Šå…¬ç¤º (ss.gov.cn /gzjg/ssqdtz/gggs/)
   CMS: è‡ªå®šä¹‰, pagination: index_{N}.html (33 pages, 654 records)
   Detail: div.m-con.zhengwen
é    N)ÚdatetimeFzhttps://www.ss.gov.cnz/gzjg/ssqdtz/gggs/z/root/search.dbÚ
ss_gonggaoé!   é   z--incrementalc                 ó.   — t        dt        › d| › �«       y )Nú[z] )ÚprintÚ	SITE_NAME)Úmsgs    ú/root/gov_crawler/crawl_ss.pyÚlogr      s   € Ü	ˆAŒiˆ[˜˜3˜%Ð
 Õ!ó    c                 óØ   — t         j                  j                  | dddœ¬«      }t         j                  j                  |t        d¬«      }|j                  «       j                  dd¬	«      S )
Nz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8)z
User-AgentÚAccept)Úheadersé   )ÚcontextÚtimeoutzutf-8Úreplace)Úerrors)ÚurllibÚrequestÚRequestÚurlopenÚssl_ctxÚreadÚdecode)ÚurlÚreqÚrs      r   Úfetchr!      s\   € Ü
�.‰.×
 Ñ
  ØTØSñ/Ð
 ó €Cô 	�‰×Ñ˜s¬G¸RÐÓ@€AØ�6‰6‹8�?‰?˜7¨9ˆ?Ó5Ð5r   c                 óÀ  — g }t        j                  d| t         j                  «      }|st        d|› d�«       |S |j	                  d«      }t        j
                  d|t         j                  «      D ]ê  }|j	                  d«      }t        j                  d|«      }t        j                  d|«      }|r|sŒE|j	                  d«      j                  «       }	|j	                  d«      j                  «       }
t        j                  d|«      }|r|j	                  d«      j                  «       nd	}|	j                  d
«      s	t        |	z   }	|j                  |
|	|dœ«       Œì |S )u?   è§£æž� ul.in-common-list > li > a[href][title] + span.fr æ—¥æœŸz3<ul[^>]*class="in-common-list[^"]*"[^>]*>(.*?)</ul>õ   ç¬¬u   é¡µæœªæ‰¾åˆ°åˆ—è¡¨ulé   z<li[^>]*>(.*?)</li>zhref="([^"]+)"ztitle="([^"]*)"z(<span[^>]*class="fr"[^>]*>([^<]*)</span>Ú Úhttp)Útitler   Údate)
ÚreÚsearchÚDOTALLr   ÚgroupÚfinditerÚstripÚ
startswithÚBASEÚappend)ÚhtmlÚpage_numÚitemsÚul_matchÚul_htmlÚli_matchÚliÚa_hrefÚa_titleÚhrefr'   Ú
span_matchÚdate_strs                r   Ú
parse_listr>   $   s4  € à€EÜ�y‰yÐOÐQUÔWY×W`ÑW`Óa€HÙÜˆc�(�Ð/Ð0Ô1ØˆØ�n‰n˜QÓ€GÜ—K‘KÐ 6¸ÄÇÁÓKò ˆØ�^‰^˜AÓˆÜ—‘Ð,¨bÓ1ˆÜ—)‘)Ð.°Ó3ˆÙ™7ØØ�|‰|˜A‹×$Ñ$Ó&ˆØ—‘˜aÓ ×&Ñ&Ó(ˆä—Y‘YÐJÈBÓOˆ
Ù2<�:×#Ñ# AÓ&×,Ñ,Ô.À"ˆØ�‰˜vÔ&Ü˜$‘;ˆDØ�‰ØØØñ
õ 	ðð$ €Lr   c                 óN   — | dk(  rt         › t        › d�S t         › t        › d| › d�S )Nr$   z
index.htmlÚindex_z.html)r0   ÚLIST_DIR)r3   s    r   Úget_page_urlrB   A   s1   € Ø�1‚}Ü�œ�z Ð,Ð,ÜˆV”H�:˜V H :¨UÐ3Ð3r   c                 ó  — t        | «      }dD ]ã  }t        j                  ||t        j                  «      }|sŒ+|j	                  d«      }g }t        j
                  d|t        j                  «      D ];  }t        j                  dd|«      j                  «       }|sŒ+|j                  |«       Œ= |s*t        j                  dd|«      j                  «       }|r|g}|sŒÐddj                  |«      ic S  t        d| › �«       y	)
u,   æ­£æ–‡ï¼šdiv.m-con.zhengwen æˆ– div.innerBox)z9<div[^>]*class="m-con[^"]*zhengwen[^"]*"[^>]*>(.*?)</div>z6<div[^>]*class="content[^"]*innerBox"[^>]*>(.*?)</div>z+<div[^>]*class="news-view"[^>]*>(.*?)</div>z1<div[^>]*class="content[^"]*Box"[^>]*>(.*?)</div>r$   z<p[^>]*>(.*?)</p>z<[^>]+>r%   Úcontentú
u   æœªæ‰¾åˆ°æ­£æ–‡: N)r!   r)   r*   r+   r,   ÚfindallÚsubr.   r1   Újoinr   )r   r2   ÚpatternÚmÚinnerÚpartsÚpÚtxts           r   Úfetch_detailrO   G   sê   € ä�‹:€Dðò 5ˆô �I‰I�g˜t¤R§Y¡YÓ/ˆÚØ—G‘G˜A“JˆEØˆEÜ—Z‘ZÐ 4°e¼R¿Y¹YÓGò &�Ü—f‘f˜Z¨¨QÓ/×5Ñ5Ó7�ÚØ—L‘L Õ%ð&ñ Ü—f‘f˜Z¨¨UÓ3×9Ñ9Ó;�ÙØ ˜E�EÚØ! 4§9¡9¨UÓ#3Ð4Ò4ð'5ô( Ð
˜C˜5Ð!Ô"Ør   c                  óf  — t        j                  t        «      } | j                  «       }d}t        rt        t        d«      nt        }t        d|dz   «      D �]�  }t        |«      }t        d|› d|› d|› �«       	 t        |«      }t        ||«      }t        d	t        |«      › d
�«       |D �]  }	|j                  d|	d   f«       |j                  «       r4t        r-t        d«       | j!                  «        t        d|› d�«         y Œ^t#        |	d   «      }
|
€Œo|
d   }t%        j&                  «       j)                  d«      }|j                  dt*        |	d   |	d   |	d   |	d   |d d |ddf	«       |j,                  dkD  sŒÕ|dz  }|dz  dk(  sŒã| j/                  «        t        d|› d�«       �Œ | j/                  «        t        d|› d|› d
�«       t1        j2                  d«       �Œ“ | j!                  «        t        d|› d
�«       y # t        $ r}t        d|› d|› �«       Y d }~�ŒÔd }~ww xY w)Nr   é   r$   u   æŠ“å�–åˆ—è¡¨é¡µ ú/z: u
   åˆ—è¡¨é¡µ u	    å¤±è´¥: u     è§£æž�åˆ° u    æ�¡z'SELECT id FROM gov_raw WHERE page_url=?r   u     å·²æœ‰è®°å½•ï¼Œå¢žé‡�ç»“æ�Ÿu   å¢žé‡�å®Œæˆ�ï¼Œå…± u
    æ�¡æ–°å¢žrD   z%Y-%m-%d %H:%M:%Sz¼INSERT OR IGNORE INTO gov_raw 
                (site_name, source_url, page_url, title, publish_date, summary, content, status, category)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)r'   r(   éÈ   Ú	publishedu   å…¬å‘Šå…¬ç¤ºé
   u     å·²å…¥åº“ u    æ�¡...r#   u   é¡µå®Œæˆ�ï¼Œç´¯è®¡ g333333Ó?u   å…¨é‡�çˆ¬å�–å®Œæˆ�ï¼Œå…±æ–°å¢ž )Úsqlite3ÚconnectÚDBÚcursorÚINCREMENTALÚminÚ	MAX_PAGESÚrangerB   r   r!   Ú	Exceptionr>   ÚlenÚexecuteÚfetchoneÚcloserO   r   ÚnowÚstrftimer
   ÚrowcountÚcommitÚtimeÚsleep)ÚconnÚcurÚ	total_newÚpage_endr3   r   r2   Úer4   ÚitemÚdetailrD   rc   s                r   Úmainrp   c   s2  € Ü�?‰?œ2Ó€DØ
�+‰+‹-€CØ€Iå$/Œs”9˜aÔ ´Y€Hä˜!˜X¨™\Ó*ó 3ˆÜ˜8Ó$ˆÜÐ˜x˜j¨¨(¨°2°c°UÐ;Ô<ð	Ü˜“:ˆDô ˜4 Ó*ˆÜˆlœ3˜u›:˜, dÐ+Ô,àó $	;ˆDØ�K‰KÐAÀDÈÁKÀ>ÔRØ�|‰|Œ~ÝÜÐ7Ô9Ø—J‘J”LÜÐ-¨i¨[¸
ÐCÔDÚØä! $ u¡+Ó.ˆFØˆ~Øà˜YÑ'ˆGÜ—,‘,“.×)Ñ)Ð*=Ó>ˆCØ�K‰Kð6ô Ø˜‘KØ˜‘KØ˜‘MØ˜‘LØ˜D˜S�MØØØ"ð
ô	ð  �|‰|˜aÓØ˜Q‘�	Ø˜r‘> QÓ&Ø—K‘K”MÜ˜, y k°Ð9Ö:ðI$	;ðL 	�‰ŒÜˆc�(�Ð.¨y¨k¸Ð>Ô?Ü�
‰
�3Žðg3ðj 	‡J�J„LÜÐ
)¨)¨°DÐ9Õ:øôc ò 	Ü�*˜X˜J i°¨sÐ3Ô4Ýûð	ús   Á;HÈ	H0ÈH+È+H0Ú__main__)Ú__doc__Úurllib.requestr   Ússlr)   rV   Úsysrg   r   Úcreate_default_contextr   Úcheck_hostnameÚ	CERT_NONEÚverify_moder0   rA   rX   r
   r\   ÚITEMS_PER_PAGEÚargvrZ   r   r!   r>   rB   rO   rp   Ú__name__© r   r   ú<module>r~      s›   ðñ÷ 3× 2× 2Ý à
$ˆ#×
$Ñ
$Ó
&€Ø€Ô Ø—m‘m€Ô à€Ø€Ø€à€	Ø€	Ø€Ø §¡Ð)€ò"ò6òò:4òò8=;ð@ ˆzÒÙ…Fð r   