Ë
    ¸¬uj3  ã                   ót  — 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mZ ddl	m
Z
 ddlZ ej                  dd«      ZdZdZd	Z ej"                  «        ed
¬«      z
  j%                  d«      ZddiZ ej*                  «       Zej.                  j1                  e«       d„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)uQ   
Crawl æ�­é”¦å�Žæ——äººæ°‘æ”¿åºœ - é€šçŸ¥å…¬å‘Š
http://www.hjhq.gov.cn/zwgk/tzgg/
é    N)ÚdatetimeÚ	timedelta)ÚurljoinÚ	SEARCH_DBz/root/search.dbu'   æ�­é”¦å�Žæ——äººæ°‘æ”¿åºœ - é€šçŸ¥å…¬å‘Šzhttp://www.hjhq.gov.cnz!http://www.hjhq.gov.cn/zwgk/tzgg/iG  )Údaysz%Y-%m-%dz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36c                 ó*  — g }t        j                  d| t         j                  «      D ]h  }|j                  d«      |j                  d«      j	                  «       |j                  d«      }}}t        t        |«      }|j                  |||dœ«       Œj |S )Nz“<div class="module-list-item">\s*<a href="([^"]*)">\s*<span class="tl">(.*?)</span>\s*<span class="date">(\d{4}-\d{2}-\d{2})</span>\s*</a>\s*</div>é   é   é   )ÚtitleÚurlÚdate)ÚreÚfinditerÚDOTALLÚgroupÚstripr   ÚLIST_URLÚappend)ÚhtmlÚitemsÚmÚhrefr   r   r   s          ú/root/gov_crawler/crawl_hjhq.pyÚ
parse_listr      s†   € Ø€EÜ�[‰[ð 	_ØŒb�i‰ióò Aˆð ŸG™G A›J¨¯©°«
×(8Ñ(8Ó(:¸A¿G¹GÀA»J�TˆeˆÜ”h Ó%ˆØ�‰˜u¨S¸$Ñ?Õ@ðAð €Ló    c                 óh  — t         j                  | d¬«      }d|_        |j                  }t	        j
                  d|«      }|r |j                  d«      j                  «       }n9t	        j
                  d|«      }|r|j                  d«      j                  «       nd}t	        j
                  d|«      }|r|j                  d«      d d	 }n+t	        j
                  d
|«      }|r|j                  d«      nd}t	        j
                  d|t        j                  «      }|r”|j                  d«      j                  «       }t	        j                  dd|t        j                  t        j                  z  ¬«      }t	        j                  dd|t        j                  t        j                  z  ¬«      }|||fS ||dfS )Né   ©Útimeoutúutf-8z+<meta name="ArticleTitle" content="([^"]*)"r	   z%<div class="detail-title">(.*?)</div>Ú z&<meta name="PubDate" content="([^"]*)"é
   u"   å�‘å¸ƒæ—¶é—´ï¼š(\d{4}-\d{2}-\d{2})zD<div class="detail-cnt" id="detailCnt">(.*?)</div>\s*</div>\s*</div>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>)ÚsessionÚgetÚencodingÚtextr   Úsearchr   r   r   ÚsubÚI)	r   Úrespr   Útmr   ÚdmÚdate_strÚcmÚcontents	            r   Úfetch_detailr2   #   sY  € Ü�;‰;�s Bˆ;Ó'€DØ€D„MØ�9‰9€DÜ	�‰ÐAÀ4Ó	H€BÙ	Ø—‘˜“×!Ñ!Ó#‰ä�Y‰YÐ?ÀÓFˆÙ')�—‘˜“×!Ñ!Ô#¨rˆÜ	�‰Ð<¸dÓ	C€BÙ	Ø—8‘8˜A“;˜s Ð#‰ä�Y‰YÐ<¸dÓCˆÙ"$�2—8‘8˜A”;¨"ˆÜ	�‰ÐZÐ\`Ôbd×bkÑbkÓ	l€BÙ	Ø—(‘(˜1“+×#Ñ#Ó%ˆÜ—&‘&Ð5°r¸7Ì"Ï)É)ÔTV×TXÑTXÉ.ÔYˆÜ—&‘&Ð3°R¸ÌÏ	É	ÔRT×RVÑRVÉÔWˆØ�h Ð'Ð'Ø�(˜BÐÐr   c                 ó„   — t        t        j                  | j                  «       «      j	                  «       d d d«      dz  S )Né   é   l            )ÚintÚhashlibÚmd5ÚencodeÚ	hexdigest)r   s    r   Úmake_int_idr;   ;   s3   € ÜŒw�{‰{˜3Ÿ:™:›<Ó(×2Ñ2Ó4°S°bÐ9¸2Ó>À%ÑHÐHr   c                  óÂ  — dt         j                  v } t        dt        › d�«       t	        j
                  t        «      }|j                  «       }d\  }}}| rdnd}d}d}t        d|dz   «      D �]î  }	|	dk(  rt        nt        › d	|	› d
�}
	 t        j                  |
d¬«      }d|_        |j                  }t#        |«      }|st        d|	› d�«        �n�t%        d„ |D «       «      }|r!|dz  }|dk\  r|	|k\  rt        d|	› d�«        �nXd}|D �]5  }|d   t&        k  r|dz  }Œ|j)                  d|d   f«      j+                  «       }|r|dz  }ŒB	 t-        |d   «      \  }}}|s|s|dz  }Œ_|xs |d   }|xs |d   }t/        |d   «      }|rt1        |j3                  dd«      «      nd}|rt5        j6                  dd|«      d d n|}t5        j6                  dd|«      j9                  «       }	 |j)                  d |t        |d   |d   |||||f	«       |j:                  dkD  r|dz  }n|dz  }t        j                   d"«       �Œ8 t        d|	› d#|› d$|› d%|› d&�	«       �Œñ |j=                  «        	 |j                  «       }|j)                  d't        f«       |j)                  d(t        f«      j?                  «       }|jA                  d)|«       |j=                  «        t        d*tC        |«      › d+�«       |jE                  «        t        d-|› d.|› d/|› �«       y # t        $ r1}t        d|	› d|› �«       t        j                   d«       Y d }~�Œãd }~ww xY w# t        $ r.}t        d|› �«       t        j                   d«       Y d }~�Œd }~ww xY w# t        $ r}t        d!|› �«       |dz  }Y d }~�Œˆd }~ww xY w# t        $ r}t        d,|› �«       Y d }~Œâd }~ww xY w)0NÚincrementalz=== z ===)r   r   r   r	   é2   r   é   Úindex_z.htmlr   r   r!   z  [ERROR] Page z: r
   z  Page z: 0 items (end)c              3   ó4   K  — | ]  }|d    t         k  –— Œ y­w)r   N)ÚCUTOFF_DATE)Ú.0Úitems     r   ú	<genexpr>zmain.<locals>.<genexpr>U   s   è ø€ ÒC°T�d˜6‘l¤[Õ0ÑCùs   ‚z: all old, stoppingr   zNSELECT 1 FROM gov_raw WHERE page_url=? AND content IS NOT NULL AND content!=''r   z  [ERROR] Detail: r   ú-r"   z<[^>]+>éÈ   z\s+ú zŽINSERT OR IGNORE INTO gov_raw(id, site_name, source_url, page_url, title, publish_date, content, summary, date_rank) VALUES(?,?,?,?,?,?,?,?,?)z  [DB] g333333Ó?z: +z
 (skipped z, >3y ú)zPDELETE FROM gov_search WHERE rowid IN (SELECT id FROM gov_raw WHERE site_name=?)zCSELECT id, title, site_name, summary FROM gov_raw WHERE site_name=?zRINSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary) VALUES(?,?,?,?)z  FTS: z records rebuiltz  FTS error: z
Done. Inserted z
, Skipped z, Old )#ÚsysÚargvÚprintÚ	SITE_NAMEÚsqlite3ÚconnectÚDB_PATHÚcursorÚranger   r%   r&   r'   r(   Ú	ExceptionÚtimeÚsleepr   ÚallrB   ÚexecuteÚfetchoner2   r;   r6   Úreplacer   r*   r   ÚrowcountÚcommitÚfetchallÚexecutemanyÚlenÚclose)Úis_incrementalÚconnÚcÚinsertedÚskippedÚ	old_totalÚ	max_pagesÚconsecutive_oldÚ	min_pagesÚpgÚlist_urlr,   r   Úer   Úall_oldrD   Úhasr   r/   r1   Úfinal_titleÚ
final_dateÚint_idÚ	date_rankÚsummaryÚc2Úrowss                               r   Úmainru   >   s
  € Ø"¤c§h¡hÐ.€NÜ	ˆD”�˜4Ð
 Ô!Ü�?‰?œ7Ó#€DØ�‰‹€AØ#*Ñ €Hˆg�yÙ#‘¨€IØ€OØ€IÜ�A�y 1‘}Ó%ó :PˆØ! Qšw•8¬x¨j¸¸r¸dÀ%Ð,Hˆð	Ü—;‘;˜x°�;Ó4ˆDØ#ˆDŒMØ—9‘9ˆDô
 ˜4Ó ˆÙÜ�G˜B˜4˜Ð/Ô0ÚÜÑC¸UÔCÓCˆÙØ˜qÑ ˆOØ !Ò#¨¨iªÜ˜ ˜tÐ#6Ð7Ô8ÚàˆOØó #	ˆDØ�F‰|œkÒ)Ø˜Q‘�	ØØ—)‘)ÐnÐquÐv{Ñq|Ðp~Ó÷  Iñ  Ió  KˆCÙØ˜1‘�ØðÜ+7¸¸U¹Ó+DÑ(��x ñ
 ¡5Ø˜1‘�ØØÒ0 4¨¡=ˆKØ!Ò1 T¨&¡\ˆJÜ   e¡Ó-ˆFÙ<Fœ˜J×.Ñ.¨s°BÓ7Ô8ÈAˆIÙ?F”b—f‘f˜Z¨¨WÓ5°d°sÑ;ÈKˆGÜ—f‘f˜V S¨'Ó2×8Ñ8Ó:ˆGðØ—	‘	ð eØœY¨¨U©°T¸%±[À+ÈzÐ[bÐdkÐmvÐwôð —:‘: ’>Ø ‘M‘Hà˜q‘L�Gô �J‰J�sŽOðG#	ôH 	�˜�t˜3˜x˜j¨
°7°)¸6À)ÀÈAÐNÖOðu:Pðv 	‡K�K„Mð#Ø�[‰[‹]ˆØ
�
‰
ÐeÔhqÐgsÔtØ�z‰zÐ_ÔbkÐamÓn×wÑwÓyˆØ
�‰ÐkÐmqÔrØ�‰ŒÜ�œ˜D›	�{Ð"2Ð3Ô4ð 	‡J�J„LÜ	Ð˜h˜Z z°'°¸&ÀÀÐ
LÕMøôA ò 	Ü�O B 4 r¨!¨Ð-Ô.Ü�J‰J�qŒMÝûð	ûô4 ò ÜÐ*¨1¨#Ð.Ô/Ü—
‘
˜1”Ýûðûô, ò Ü˜ ˜s�mÔ$Ø˜1‘–ûðûô ò #Ü�˜a˜SÐ!×"Ñ"ûð#úsa   Â
*LÅMÇ.?NÉ1BN= Ì	MÌ%&MÍMÍ	NÍ"#NÎNÎ	N:ÎN5Î5N:Î=	OÏOÏOÚ__main__)Ú__doc__Úrequestsr   rN   rJ   rT   r7   r   r   Úurllib.parser   ÚosÚgetenvrP   rM   ÚBASE_URLr   ÚnowÚstrftimerB   ÚHEADERSÚSessionr%   ÚheadersÚupdater   r2   r;   ru   Ú__name__© r   r   ú<module>r…      sÁ   ðñ÷ 1× 0× 0ß (Ý  Û 	à
ˆ"�)‰)�KÐ!2Ó
3€Ø5€	Ø#€Ø.€Øˆx�|‰|‹~¡	¨uÔ 5Ñ5×?Ñ?À
ÓK€ð ÐPð€ð ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ ò	òò0IòONðb ˆzÒÙ…Fð r   