Ë
    ¸¬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Zddl	Z	ddl
m
Z
 ddlmZ e	j                  e	_        dZdZdZdZ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)uN   Crawl gxq.anqing.gov.cn - å®‰åº†é«˜æ–°åŒºä¼�ä¸šçŽ¯ä¿�ä¿¡æ�¯å…¬å¼€ (Lonsun CMS)é    N)Údatetime)Úurljoinzhttps://gxq.anqing.gov.cnz1https://gxq.anqing.gov.cn/content/column/75175571Úaq_gxq_qyhbz/root/search.dbé   é   z
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 óô   — t         › d| › dt        › �}t        j                  j	                  |t
        ¬«      }t        j                  j                  |d¬«      }|j                  «       j                  dd¬«      S )	Nz?pageIndex=z
&pageSize=©Úheadersé   ©Útimeoutúutf-8Úreplace©Úerrors)	Ú
COLUMN_URLÚ	PAGE_SIZEÚurllibÚrequestÚRequestr
   ÚurlopenÚreadÚdecode)ÚpageÚurlÚreqÚresps       ú/root/gov_crawler/crawl_aq.pyÚfetch_list_pager      sf   € ÜˆL˜ D 6¨´I°;Ð
?€CÜ
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CÜ�>‰>×!Ñ! #¨rÐ!Ó2€DØ�9‰9‹;×Ñ˜g¨iÐÓ8Ð8ó    c                 ó  — t        j                  d| t         j                  «      }g }|D ]Z  \  }}}|j                  d«      st	        t
        |«      n|}|j                  ||j                  «       |j                  «       dœ«       Œ\ |S )Nzq<a href="([^"]+)"[^>]*title="([^"]*)"[^>]*class="left">.*?</a>.*?<span[^>]*class="right date"[^>]*>([^<]+)</span>Úhttp)r   ÚtitleÚdate)ÚreÚfindallÚDOTALLÚ
startswithr   ÚBASEÚappendÚstrip)ÚhtmlÚitemsÚresultÚhrefr#   Údate_strÚfull_urls          r   Ú
parse_listr2      s{   € Ü�J‰JØ|ØŒb�i‰ió€Eð €FØ!&ò [Ñˆˆe�XØ.2¯o©o¸fÔ.E”7œ4 Ô&È4ˆØ�‰˜h°·±³ÈÏÉÓHXÑYÕZð[ð €Mr    c                 óö  — 	 t         j                  j                  | t        ¬«      }t         j                  j	                  |d¬«      }|j                  «       j                  dd¬«      }t        j                  d|t        j                  «      }|s%t        j                  d|t        j                  «      }|sy	|j                  d
«      j                  «       S # t        $ r}t        d|› �«       Y d }~y	d }~ww xY w)Nr	   r   r   r   r   r   zT<div[^>]*class="[^"]*ls-article-info[^"]*j-fontContent[^"]*"[^>]*>(.*?)</div>\s*<divzB<div[^>]*class="[^"]*ls-article-info[^"]*"[^>]*>(.*?)</div>\s*<divÚ é   z  Detail error: )r   r   r   r
   r   r   r   r%   Úsearchr'   Úgroupr+   Ú	ExceptionÚprint)r   r   r   r,   ÚmÚes         r   Úfetch_detailr<   '   sÍ   € ðÜ�n‰n×$Ñ$ S´'Ð$Ó:ˆÜ�~‰~×%Ñ% c°2Ð%Ó6ˆØ�y‰y‹{×!Ñ! '°)Ð!Ó<ˆÜ�I‰IÐmÐosÔuw×u~Ñu~ÓˆÙÜ—	‘	Ð_ÐaeÔgi×gpÑgpÓqˆAÙØØ�w‰w�q‹z×ÑÓ!Ð!øÜò ÜÐ   Ð$Ô%Üûðús   ‚B5C Â8C Ã	C8Ã C3Ã3C8c                 ó  — | syt        j                  t        «      }|j                  d«       |j	                  «       }d}| D ]«  }|j                  d|d   f«      j                  «       rŒ(|j                  dt        |d   |d   |d   |d   |d   r0t        t        j                  |d   d«      j                  «       «      nd|d	   r|d	   d d
 nd|d	   f«       |j                  «        |dz  }Œ­ |j                  «        |S )Nr   úPRAGMA busy_timeout=30000ú)SELECT id FROM gov_raw WHERE source_url=?r   zŒINSERT INTO gov_raw (site_name, source_url, page_url, title, publish_date, date_rank, summary, content)
            VALUES (?,?,?,?,?,?,?,?)r#   r$   ú%Y-%m-%dÚcontentéÈ   r4   r5   )Úsqlite3ÚconnectÚDB_PATHÚexecuteÚcursorÚfetchoneÚ	SITE_NAMEÚintr   ÚstrptimeÚ	timestampÚcommitÚclose)ÚrecordsÚconnÚcÚcountÚrs        r   Ú
save_to_dbrT   7   s  € ÙØÜ�?‰?œ7Ó#€DØ‡L�LÐ,Ô-Ø�‰‹€AØ€EØò 	ˆØ�9‰9Ð@À1ÀUÁ8À+ÓN×WÑWÔYØØ	�	‰	ð (ä˜a ™h¨¨%©°!°G±*¸aÀ¹iØPQÐRXÒPY”3”x×(Ñ(¨¨6©°JÓ?×IÑIÓKÔLÐ_`Ø)*¨9ª�1�Y‘<  Ñ%¸2¸qÀ¹|ðMô	Nð
 	�‰ŒØ�‰
‰ð	ð 	‡J�J„LØ€Lr    c                  óØ  — t        dt        › d�«       g } t        dt        dz   «      D ]X  }	 t	        |«      }t        |«      }|st        d|› d�«        n.t        d|› dt        |«      › d�«       | j                  |«       ŒZ t        d	t        | «      › d�«       d
}t        | «      D �]U  \  }}t        d|dz   › dt        | «      › d|d   d d › d�«       	 t        |d   «      }t        j                  t        «      }	|	j                  d«       |	j                  «       }
|
j                  d|d   f«      j!                  «       rt        d«       |	j#                  «        Œ·|
j                  dt        |d   |d   |d   |d   |d   r0t%        t'        j(                  |d   d«      j+                  «       «      nd
|r|d d nd|f«       |	j-                  «        |	j#                  «        |dz  }t        d|d   d d › �«       �ŒX t        d|› dt        | «      › d�«       y # t        $ r}t        d|› d|› �«       Y d }~ �Œ»d }~ww xY w# t        $ r}t        d|› �«       Y d }~�Œ»d }~ww xY w)Nz=== Crawling z ===r5   zPage z
: no itemsz: z itemsz
: error - zTotal: r   ú[ú/z] r#   é2   z...r   r>   r?   z  SKIPz�INSERT INTO gov_raw (site_name, source_url, page_url, title, publish_date, date_rank, summary, content)
                VALUES (?,?,?,?,?,?,?,?)r$   r@   rB   r4   z  OK: z	  Error: z
=== Complete: z new records ===)r9   rI   ÚrangeÚ	MAX_PAGESr   r2   ÚlenÚextendr8   Ú	enumerater<   rC   rD   rE   rF   rG   rH   rN   rJ   r   rK   rL   rM   )Ú	all_itemsr   r,   r-   r;   ÚsavedÚiÚitemrA   rP   rQ   s              r   Úmainrb   L   ss  € Ü	ˆMœ)˜ DÐ
)Ô*à€IÜ�aœ Q™Ó'ò ˆð
	Ü" 4Ó(ˆDÜ˜tÓ$ˆEÙÜ˜˜d˜V :Ð.Ô/ÙÜ�E˜$˜˜r¤# e£* ¨VÐ4Ô5Ø×Ñ˜UÕ#ðô 
ˆG”C˜	“NÐ# 6Ð
*Ô+ð €EÜ˜YÓ'ó #‰ˆˆ4Ü��!�A‘#��aœ˜I›Ð' r¨$¨w©-¸¸Ð*<Ð)=¸SÐAÔBð	#Ü" 4¨¡;Ó/ˆGÜ—?‘?¤7Ó+ˆDØ�L‰LÐ4Ô5Ø—‘“ˆAØ�y‰yÐDÀtÈEÁ{ÀnÓU×^Ñ^Ô`Ü˜Ô Ø—
‘
”ØØ�I‰Ið ,ä  $ u¡+¨t°E©{¸DÀ¹MÈ4ÐPVÉ<ØW[Ð\bÒWc”sœ8×,Ñ,¨T°&©\¸:ÓF×PÑPÓRÔSÐijÙ(/�w˜t ‘}°R¸ðBôCð
 �K‰KŒMØ�J‰JŒLØ�Q‰JˆEÜ�F˜4 ™=¨¨"Ð-Ð.Ð/Ö0ð'#ô. 
Ð˜U˜G 1¤S¨£^Ð$4Ð4DÐ
EÕFøô? ò 	Ü�E˜$˜˜z¨!¨Ð-Ô.Þûð	ûô8 ò 	#Ü�I˜a˜S�/×"Ò"ûð	#ús=   ­'HÁ,HÃBIÅ BIÈ	IÈ'H?È?IÉ	I)ÉI$É$I)Ú__main__)Ú__doc__Úsysr%   ÚjsonrC   Úurllib.requestr   Úurllib.errorÚ	tracebackÚsslr   Úurllib.parser   Ú_create_unverified_contextÚ_create_default_https_contextr)   r   rI   rE   r   rZ   r
   r   r2   r<   rT   rb   Ú__name__© r    r   ú<module>rp      s„   ðá Tß K× K× K× KÝ Ý  à$'×$BÑ$B€Ô !à"€Ø@€
Ø€	Ø
€Ø€	Ø€	ð ÐPð€ò
9òòò ò*,Gð^ ˆzÒÙ…Fð r    