Ë
    ¸¬ujå  ã                   óÀ   — 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 dZ e j                  dd«      Z
dZddiZdd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)é    N)Údatetimez/https://www.qdncg.gov.cn/ztzl/rdzt/cgxhbzt/xmhpÚ	SEARCH_DBz/root/search.dbu   å²‘å·©åŽ¿-é¡¹ç›®çŽ¯è¯„z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 óº  — t        |«      D ]u  }	 t        j                  j                  | t        ¬«      }t        j                  j                  |d¬«      5 }|j                  «       j                  dd¬«      cd d d «       c S  y # 1 sw Y   nxY wŒ†# t        $ r?}||dz
  k  rt        j                  d«       nt        d	| ›d
|›�«       Y d }~ y Y d }~ŒÉd }~ww xY w)N)Úheadersé   ©Útimeoutzutf-8Úreplace)Úerrorsé   é   z  [WARN] Failed to fetch ú: )ÚrangeÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚreadÚdecodeÚ	ExceptionÚtimeÚsleepÚprint)ÚurlÚretriesÚiÚreqÚrespÚes         ú /root/gov_crawler/crawl_qdncg.pyÚfetchr"      sÅ   € Ü�7‹^ò 
ˆð		Ü—.‘.×(Ñ(¨´gÐ(Ó>ˆCÜ—‘×'Ñ'¨°RÐ'Ó8ð E¸DØ—y‘y“{×)Ñ)¨'¸)Ð)ÓD÷Eó Eñ
÷Eð Eúð Eøäò 	Ø�7˜Q‘;ŠÜ—
‘
˜1•åº3ÁÐBÔCÝô ûð	ús0   �ABÁ!BÁ7	BÂB	Â
BÂ	CÂ/CÃCc                 óD  — g }d}t        j                  || t         j                  «      D ]s  }|j                  d«      j	                  «       }|j                  d«      j	                  «       }|j                  d«      j	                  «       }|j                  |||f«       Œu |S )NzZ<a[^>]*TARGET="_blank"[^>]*title="([^"]*)"[^>]*href="([^"]*)"[^>]*>.*?<span>([^<]*)</span>r   r   é   )ÚreÚfinditerÚDOTALLÚgroupÚstripÚappend)ÚhtmlÚitemsÚpatternÚmÚtitleÚhrefÚdate_strs          r!   Úextract_items_from_pager2      sˆ   € Ø€EØk€GÜ�[‰[˜ $¬¯	©	Ó2ò .ˆØ—‘˜“
× Ñ Ó"ˆØ�w‰w�q‹z×ÑÓ!ˆØ—7‘7˜1“:×#Ñ#Ó%ˆØ�‰�e˜T 8Ð,Õ-ð	.ð
 €Ló    c                 ó  — t        j                  d| t         j                  «      }|r|j                  d«      j	                  «       S t        j                  d| t         j                  «      }|r|j                  d«      j	                  «       S y)Nz-class="trs_editor_view[^"]*"[^>]*>(.*?)</div>r   zclass="nry"[^>]*>(.*?)</div>Ú )r%   Úsearchr'   r(   r)   )r+   r.   s     r!   Úextract_contentr7   '   sg   € Ü
�	‰	ÐBÀDÌ"Ï)É)ÓT€AÙØ�w‰w�q‹z×ÑÓ!Ð!ä
�	‰	Ð1°4¼¿¹ÓC€AÙØ�w‰w�q‹z×ÑÓ!Ð!Ør3   c                 óX   — t        j                  d| «      }|r|j                  d«      S |S )Nz(\d{4}-\d{2}-\d{2})r   )r%   r6   r(   )r+   Údefault_dater.   s      r!   Úextract_dater:   1   s*   € Ü
�	‰	Ð(¨$Ó/€AÙØ�w‰w�q‹zÐØÐr3   c                 óÞ   — t        j                  d| «      }|rT|j                  d«      }dD ].  }|j                  |«      }|dkD  sŒ|d | } |j	                  «       S  |j	                  «       S |S )Nz<title>(.*?)</title>r   )u   -é¡¹ç›®çŽ¯è¯„u   -å²‘å·©åŽ¿äººæ°‘æ”¿åºœr   )r%   r6   r(   Úrfindr)   )r+   Úfallback_titler.   r/   ÚsuffixÚidxs         r!   Úextract_titler@   7   su   € Ü
�	‰	Ð)¨4Ó0€AÙØ—‘˜“
ˆØAò 	ˆFØ—+‘+˜fÓ%ˆCØ�Q‹wØ˜d˜s˜�ØØ�{‰{‹}Ðð	ð
 �{‰{‹}ÐØÐr3   c                  ób  — t        dt        j                  «       j                  «       ›dt        ›�«       g } t        d«       t        t        dz   «      }|r3t        |«      }t        dt        |«      z  «       | j                  |«       t        dz   }t        d«       t        |«      }|r3t        |«      }t        dt        |«      z  «       | j                  |«       t        dt        | «      z  «       d	d l
}|j                  t        d
¬«      }|j                  d«       |j                  d«       |j                  «       }d	}d	}| D ]Û  \  }	}
}|j                  d|
f«       |j                  «       r|dz  }Œ0t        |
«      }|s|dz  }ŒCt!        |«      }|st        d|	d d
 z  «       |dz  }Œgt#        ||	«      }t%        ||«      }	 |j                  dt        t        |
||||d d j'                  dd«      j)                  «       f«       |dz  }t-        j.                  d«       ŒÝ |j1                  «        |j3                  «        t        d«       t        d|z  «       t        d|z  «       t        dt        | «      z  «       y # t*        $ r }t        d|
›d|›�«       |dz  }Y d }~Œšd }~ww xY w)Nú[z] Starting crawl: zFetching page 1...ú/z  Found %d itemsz/index_2.htmlzFetching page 2...z
Total items to process: %dr   r   r   zPRAGMA journal_mode=WALzPRAGMA busy_timeout=30000z'SELECT id FROM gov_raw WHERE page_url=?r   z  [SKIP] No content: %szºINSERT OR REPLACE INTO gov_raw 
                (site_name, source_url, page_url, title, publish_date, content, status, summary)
                VALUES (?, ?, ?, ?, ?, ?, 'published', ?)éÈ   ú
ú z  [ERR] DB error for r   g333333Ó?z
=== Completed ===zInserted: %dzSkipped: %dz	Total: %d)r   r   ÚnowÚ	isoformatÚ	SITE_NAMEr"   ÚBASE_URLr2   ÚlenÚextendÚsqlite3ÚconnectÚDB_PATHÚexecuteÚcursorÚfetchoner7   r@   r:   r
   r)   r   r   r   ÚcommitÚclose)Ú	all_itemsr+   r,   Ú	page2_urlrM   ÚconnÚcÚinsertedÚskippedr/   Úpage_urlr1   Údetail_htmlÚcontentÚclean_titleÚpub_dater    s                    r!   Úmainr`   C   sv  € Ý	¤x§|¡|£~×'?Ñ'?Õ'AÅ9Ð
MÔNà€Iô 
Ð
ÔÜ”˜C‘Ó €DÙÜ'¨Ó-ˆÜÐ ¤3 u£:Ñ-Ô.Ø×Ñ˜Ôô ˜?Ñ*€IÜ	Ð
ÔÜ�Ó€DÙÜ'¨Ó-ˆÜÐ ¤3 u£:Ñ-Ô.Ø×Ñ˜Ôä	Ð
(¬3¨y«>Ñ
9Ô:ãØ�?‰?œ7¨Bˆ?Ó/€DØ‡L�LÐ*Ô+Ø‡L�LÐ,Ô-Ø�‰‹€Aà€HØ€Gà%.ò Ñ!ˆˆx˜Ø	�	‰	Ð;¸h¸[ÔIØ�:‰:Œ<Ø�q‰LˆGØä˜H“oˆÙØ�q‰LˆGØä! +Ó.ˆÙÜÐ+¨e°C°R¨jÑ8Ô9Ø�q‰LˆGØä# K°Ó7ˆÜ ¨XÓ6ˆð		Ø�I‰Ið =ô œH h°¸XÀwØ˜˜#�×&Ñ& t¨SÓ1×7Ñ7Ó9ð;ô<ð
 ˜‰MˆHô
 	�
‰
�3�ð?ðB 	‡K�K„MØ‡J�J„Lä	Ð
Ô Ü	ˆ.˜8Ñ
#Ô$Ü	ˆ-˜'Ñ
!Ô"Ü	ˆ+œ˜I›Ñ
&Õ'øô ò 	Ý²8¹QÐ?Ô@Ø�q‰L�Gûð	ús   ÇAJÊ	J.ÊJ)Ê)J.Ú__main__)r$   )Úosr%   r   ÚsysÚurllib.requestr   Úurllib.errorr   rJ   ÚgetenvrO   rI   r   r"   r2   r7   r:   r@   r`   Ú__name__© r3   r!   ú<module>ri      sw   ðã 	Ø 9ß × ß #Ý à<€Ø
ˆ"�)‰)�KÐ!2Ó
3€Ø$€	ð ÐPð€óòòòò
òH(ðT ˆzÒÙ…Fð r3   