Ë
    è‡zj  ã                   ó  — d Z ddlZddlZddlZddlZddlZej                  j                  dd«       ddl	m
Z
 dZdZdZdZ ej                  «       Zd	d
iZd„ Z G d„ de
«      Zedk(  r eeed¬«      j+                  «        yy)u5   æ�’å…‰ç§‘æŠ€ä¿¡æ�¯å…¬ç¤ºçˆ¬è™« â€” ä¸‡æˆ·ç½‘ç»œ ezEipé    Nz/root/gov_crawler)Ú
GovCrawleru   æ�’å…‰ç§‘æŠ€-ä¿¡æ�¯å…¬ç¤ºzwww.hgkjgf.comzhttps://www.hgkjgf.comz3https://www.hgkjgf.com/cn/list/list_25_page_{}.htmlz
User-AgentzMozilla/5.0c                 ó  — t         j                  j                  | t        ¬«      }	 t         j                  j	                  |t
        d¬«      5 }|j                  «       j                  dd¬«      cd d d «       S # 1 sw Y   y xY w#  Y y xY w)N)Úheadersé   )ÚcontextÚtimeoutzutf-8Úreplace)Úerrors)ÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚCTXÚreadÚdecode)ÚurlÚreqÚrs      ú/root/gov_crawler/crawl_hgkj.pyÚhttp_getr      so   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CðÜ�^‰^×#Ñ# C´¸bÐ#ÓAð 	>ÀQØ—6‘6“8—?‘? 7°9�?Ó=÷	>÷ 	>ò 	>ûðÙús)   §&B Á!A8Á.	B Á8BÁ=B ÂB ÂBc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚHgkjCrawlerc           	      ó`  — d}t        d|dz   «      D �]  }|dkD  rt        j                  |«      nd}t        |«      }|st	        d|› d�«       Œ=t        j                  d|t
        j                  «      }|st	        d|› d�«       Œtg }t        j                  d|j                  d«      t
        j                  «      D ]•  }|j                  «       sŒt        j                  d	|«      }t        j                  d
|«      }	|sŒC|j                  d«      }
|
j                  d«      s	t        |
z   }
|	r|	j                  d«      nd}|j                  |
|f«       Œ— t	        d|› dt        |«      › d�«       |D ]¸  \  }
}t        |
«      }|sŒt        j                  d|t
        j                  «      }|r|j                  d«      j                  «       nd}t        j                  d|t
        j                  «      }|r|j                  d«      j                  «       nd}| j                  ||
||¬«       Œº �Œ y )Né   é   z+https://www.hgkjgf.com/cn/list/list_25.aspxu     âš ï¸� ç¬¬u   é¡µèŽ·å�–å¤±è´¥z0<div[^>]*class="NewsList"[^>]*>.*?<ul>(.*?)</ul>u   é¡µæ— åˆ—è¡¨z<li[^>]*>(.*?)</li>zhref='([^']*info_25[^']+)'z(\d{4}-\d{2}-\d{2})ÚhttpÚ u
     ðŸ“„ ç¬¬u   é¡µ: u   æ�¡z<h2>(.*?)</h2>z.<div[^>]*class="ContentAbout"[^>]*>(.*?)</div>)Útitler   ÚcontentÚdate)ÚrangeÚLIST_TPLÚformatr   ÚprintÚreÚsearchÚSÚfindallÚgroupÚstripÚ
startswithÚBASEÚappendÚlenÚ
store_item)ÚselfÚtotal_pagesÚpager   ÚhtmlÚmÚitemsÚliÚhref_mÚdate_mÚhrefr!   Údetail_htmlÚtitle_mr   Ú	content_mr    s                    r   Údo_crawlzHgkjCrawler.do_crawl   sï  € ØˆÜ˜!˜[¨1™_Ó-ó &	SˆDØ+/°!ª8”(—/‘/ $Ô'Ð9fˆCÜ˜C“=ˆDÙÜ˜ T F¨/Ð:Ô;Øô —	‘	ÐMÈtÔUW×UYÑUYÓZˆAÙÜ˜ T F¨,Ð7Ô8ØàˆEÜ—j‘jÐ!7¸¿¹À»ÄRÇTÁTÓJò +�Ø—x‘x”zØÜŸ™Ð#@À"ÓE�ÜŸ™Ð#9¸2Ó>�ÙØØ—|‘| A“�Ø—‘ vÔ.Ü $™;�DÙ*0�v—|‘| A”°b�Ø—‘˜d D˜\Õ*ð+ô �J˜t˜f E¬#¨e«*¨°SÐ9Ô:Ø#ò 
S‘
��dÜ& t›n�Ù"ØäŸ)™)Ð$5°{ÄBÇDÁDÓI�Ù4;˜Ÿ™ aÓ(×.Ñ.Ô0À�äŸI™IÐ&WÐYdÔfh×fjÑfjÓk�	Ù8A˜)Ÿ/™/¨!Ó,×2Ñ2Ô4Àr�Ø—‘ e°¸wÈT�ÕRò
Sñ9&	Só    c           	      ó–  — | j                  «        ddddœ| _        t        d«      j                  «       }| j	                  «        t        d«      j                  «       |z
  }t        dd› �«       t        d| j                  d   › d| j                  d	   › d
| j                  d   › �«       t        d|d›d�«       | j                  «        y )Nr   )ÚnewÚskipr
   Útimeú
u‡   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€u   âœ… æ–°å¢ž: rA   u    | è·³è¿‡: rB   u    | é”™è¯¯: r
   u   â�±ï¸� è€—æ—¶: z.1fÚs)Úensure_siteÚ_statsÚ
__import__rC   r>   r%   Úsync_to_local_db)r1   Út0Úelapseds      r   ÚrunzHgkjCrawler.runB   s»   € Ø×ÑÔØ¨°aÑ8ˆŒÜ˜Ó×$Ñ$Ó&ˆØ�‰ŒÜ˜VÓ$×)Ñ)Ó+¨bÑ0ˆÜ��8�*ˆoÔÜ�˜TŸ[™[¨Ñ/Ð0°¸D¿K¹KÈÑ<OÐ;PÐP[Ð\`×\gÑ\gÐhpÑ\qÐ[rÐsÔtÜ� ¨˜}¨AÐ.Ô/à×ÑÕr?   c                 ó>  — ddl }| j                  «       }|j                  d| j                  f«      j	                  «       }|j                  «        |st        d«       y|j                  dd¬«      }d}|D ]G  \  }}}}	}
	 |j                  d|||dd	 |	xs d
|
xs d
dd t        f«       |j                  dkD  r|dz  }ŒI |j                  «        |j                  «        t        d|› dt        |«      › d�«       y# t        $ r}t        d|› �«       Y d}~Œ¢d}~ww xY w)u2   ç›´æŽ¥å†™å…¥æœ¬åœ° /root/search.db çš„ gov_raw è¡¨r   Nz`SELECT title, url, content, publish_date, summary FROM crawl_results WHERE site_id=? ORDER BY idu     â�­ï¸� æ— æ•°æ�®z/root/search.dbé   )r   ztINSERT OR IGNORE INTO gov_raw (title, page_url, content, publish_date, summary, site_name) VALUES (?, ?, ?, ?, ?, ?)i@  r   i,  r   z  DB error: u   ðŸ“¤ å·²å�Œæ­¥ ú/u    æ�¡åˆ° search.db)Úsqlite3Ú_get_dbÚexecuteÚsite_idÚfetchallÚcloser%   ÚconnectÚ	SITE_NAMEÚtotal_changesÚ	ExceptionÚcommitr/   )r1   rP   Údb_localÚrowsÚdbÚaddedr   Úpage_urlr    Úpub_dateÚsummaryÚes               r   rI   zHgkjCrawler.sync_to_local_dbN   s3  € ãØ—<‘<“>ˆØ×ÑØnØ�\‰\ˆOó
÷ ‰(‹*ð 	ð 	�‰ÔáÜÐ&Ô'Øà�_‰_Ð.¸ˆ_Ó;ˆØˆØ;?ò 		*Ñ7ˆE�8˜W h°ð*Ø—
‘
ð KØ˜H g¨e¨t n°h²nÀ"ÀwÂ}ÐRTÐVZÐWZÐF[Ô]fÐgôð ×#Ñ# aÒ'Ø˜Q‘J�Eøð		*ð 	�	‰	ŒØ
�‰Œ
Ü� ˜w a¬¨D«	 {Ð2CÐDÕEøô	 ò *Ü˜ Q CÐ(×)Ñ)ûð*ús   Á?>C;Ã;	DÄDÄDN)Ú__name__Ú
__module__Ú__qualname__r>   rL   rI   © r?   r   r   r      s   „ ò(SòT
 óFr?   r   Ú__main__zcrawler_results.db)Ú	site_nameÚdomainÚdb_name)Ú__doc__r&   ÚsysÚosÚurllib.requestr   ÚsslÚpathÚinsertÚbase_crawlerr   rW   ÚDOMAINr-   r#   Ú_create_unverified_contextr   r   r   r   rc   rL   rf   r?   r   ú<module>ru      s”   ðá ;ß '× 'Ó 'Ø ‡�‡��Ð&Ô 'Ý #à'€	Ø	€Ø€Ø@€à$€c×$Ñ$Ó&€Ø˜Ð
'€òôSF�*ô SFðj ˆzÒÙØØØ$ô÷ 
�c…eð r?   