Ë
    ¿}j+  ã                   ój  — 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mZ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ZdddœZ ej*                  «       Zej.                  j1                  e«       d„ Zd„ Zedk(  r e«        yy)uk   Crawl å¥‰æ–°åŽ¿äººæ°‘æ”¿åºœ - å…¬å‘Šå…¬ç¤º via API
http://www.fengxin.gov.cn/fxxrmzf/gggs3a30/pc/list.html
é    N)ÚdatetimeÚ	timedeltaÚ	SEARCH_DBz/root/search.dbu$   å¥‰æ–°åŽ¿äººæ°‘æ”¿åºœ - å…¬å‘Šå…¬ç¤ºz$https://www.fengxin.gov.cn/queryListÚgggs3a30iG  )Údaysz%Y-%m-%dé   z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zapplication/json)z
User-AgentzContent-Typec                 ó(  — | t         t        dœ}t        j                  t        |d¬«      }|j                  «       }d|vrg dfS |d   j                  dd«      }g }|d   j                  dg «      D �]  }|d   }|j                  d	d
«      j                  «       }|j                  dd
«      d d }	|j                  di «      }
t        |
t        «      r|
j                  dd
«      nt        |
t        «      r|
nd
}|j                  dd«      }t        |t        «      rt        j                  |«      }t        |t        «      r|j                  dd
«      nd
}|r|j                  d«      sd|z   }|sŒü|sŒÿ|j                  |||	|dœ«       �Œ ||fS #  i }Y ŒexY w)N)ÚcurrentÚpageSizeÚchannelCodeé   )ÚjsonÚtimeoutÚdatar   ÚtotalÚresultsÚsourceÚtitleÚ ÚpubDateé
   ÚcontentÚurlsz{}ÚpcÚhttpzhttp://www.fengxin.gov.cn)r   ÚurlÚdater   )Ú	PAGE_SIZEÚCHANNEL_CODEÚsessionÚpostÚAPI_URLr   ÚgetÚstripÚ
isinstanceÚdictÚstrÚloadsÚ
startswithÚappend)ÚpageÚpayloadÚrespr   r   ÚitemsÚrÚsr   Úpub_dateÚcontent_objr   r   r   s                 ú/root/gov_crawler/crawl_fx.pyÚ
fetch_pager4      sˆ  € Ø¬IÄlÑS€GÜ�<‰<œ g°rˆ<Ó:€DØ�9‰9‹;€DØ�TÑØ�1ˆuˆØ�‰L×Ñ˜W aÓ(€EØ€EØ�&‰\×Ñ˜i¨Ó,ó ]ˆØˆh‰KˆØ—‘�g˜rÓ"×(Ñ(Ó*ˆØ—5‘5˜ BÓ'¨¨Ð,ˆØ—e‘e˜I rÓ*ˆÜ4>¸{ÌDÔ4Q�+—/‘/ )¨RÔ0ÔgqÐr}ô  @Cô  hDÑXcð  JLˆØ�u‰u�V˜TÓ"ˆÜ�dœCÔ ÜŸ
™
 4Ó(�ä$.¨t´TÔ$:ˆd�h‰h�t˜RÔ ÀˆÙ�s—~‘~ fÔ-Ø-°Ñ3ˆCÚ’SØ�L‰L 5°¸hÐSZÑ[Ö\ð]ð �%ˆ<Ðøð ˜2’Dús   ÄFÆFc                  óâ  — dt         j                  v } t        dt        › d�«       t	        j
                  t        «      }|j                  «       }dx}x}}t        j                  «       }t        d«      \  }}t        d|t        z   dz
  t        z  «      }	| rdn|	}
t        d|› d|	› �«       d}t        d|
dz   «      D �]1  }	 t        |«      \  }}|s �nt        d„ |D «       «      }|r!|dz  }|d
k\  r|dk\  rt        d|› d�«        �nèd}|D �]©  }|d   r|d   t         k  r|dz  }Œ|j#                  d|d   f«      j%                  «       }|r|dz  }ŒGt'        j(                  dd|d   t&        j*                  t&        j,                  z  ¬«      }t'        j(                  dd|t&        j*                  t&        j,                  z  ¬«      }t/        t1        j2                  |d   j5                  «       «      j7                  «       d d d«      dz  }|d   rt/        |d   j9                  dd«      «      nd}|rt'        j(                  dd|«      d d n|d   }t'        j(                  dd|«      j;                  «       }|j#                  d |t        |d   |d   |d   |d   |||f	«       |j<                  dkD  s�Œ¥|dz  }�Œ¬ t        d|› d!|
› d"|› d#|› d$|› d%t        j                  «       |z
  d&›d'�«       �Œ4 |j?                  «        |j                  «       }|j#                  d(t        f«       |j#                  d)t        f«      jA                  «       }|D ]  }|j#                  d*|«       Œ |j?                  «        |jC                  «        t        d+t        j                  «       |z
  d&›d,|› d-|› d$|› �«       y # t        $ r1}t        d|› d	|› �«       t        j                  d
«       Y d }~�Œ-d }~ww xY w).NÚincrementalz=== z ===r   é   z	  Total: z	, pages: z  [ERR] Page z: é   c              3   óN   K  — | ]  }|d    sŒ	|d    xr |d    t         k  –— Œ y­w)r   N)ÚCUTOFF_DATE)Ú.0Úits     r3   ú	<genexpr>zmain.<locals>.<genexpr>G   s.   è ø€ Ò\À"ÐQSÐTZÓQ[�b˜‘jÒ= R¨¡Z´+Ñ%=Ó=Ñ\ùs   ‚
%�%é   z  Page z: all old, stopr   zNSELECT 1 FROM gov_raw WHERE page_url=? AND content IS NOT NULL AND content!=''r   z<script[^>]*>.*?</script>r   r   )Úflagsz<style[^>]*>.*?</style>r   é   l            ú-z<[^>]+>éÈ   r   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: +z (skip z, old z) [z.0fzs]zPDELETE FROM gov_search WHERE rowid IN (SELECT id FROM gov_raw WHERE site_name=?)z@SELECT id,title,site_name,summary FROM gov_raw WHERE site_name=?zOINSERT OR IGNORE INTO gov_search(rowid,title,site_name,summary) VALUES(?,?,?,?)z
Done (zs). +z, skip )"ÚsysÚargvÚprintÚ	SITE_NAMEÚsqlite3ÚconnectÚDB_PATHÚcursorÚtimer4   Úmaxr   ÚrangeÚ	ExceptionÚsleepÚallr:   ÚexecuteÚfetchoneÚreÚsubÚDOTALLÚIÚintÚhashlibÚmd5ÚencodeÚ	hexdigestÚreplacer$   ÚrowcountÚcommitÚfetchallÚclose)Úis_incrementalÚconnÚcÚinsertedÚskippedÚ	old_totalÚstartÚ_r   Útotal_pagesÚ	max_pagesÚconsecutive_oldÚpgr.   ÚeÚall_oldr<   Úhasr   ÚfidÚdrÚsummaryÚc2Úrowsr/   s                            r3   Úmainrw   0   sâ  € Ø"¤c§h¡hÐ.€NÜ	ˆD”�˜4Ð
 Ô!Ü�?‰?œ7Ó#€DØ�‰‹€AØ%&Ð&€HÐ&ˆw˜Ü�I‰I‹K€Eä˜!‹}�H€A€uÜ�a˜%¤)Ñ+¨aÑ/´IÑ=Ó>€KÙ#‘¨€IÜ	ˆI�e�W˜I k ]Ð
3Ô4à€OÜ�A�y 1‘}Ó%ó #tˆð	Ü! "“~‰HˆE�1ñ
 ÚÜÑ\ÈÔ\Ó\ˆÙØ˜qÑ ˆOØ !Ò#¨¨aªÜ˜ ˜t ?Ð3Ô4ÚàˆOØó 	ˆBØ�&Šz˜b ™j¬;Ò6Ø˜Q‘�	ØØ—)‘)ÐlÐoqÐrwÑoxÐnzÓ{÷  Eñ  Eó  GˆCÙØ˜1‘�ØÜ—f‘fÐ9¸2¸rÀ)¹}ÔTV×T]ÑT]Ô^`×^bÑ^bÑTbÔcˆGÜ—f‘fÐ7¸¸WÌBÏIÉIÔVX×VZÑVZÉNÔ[ˆGÜ”g—k‘k " U¡)×"2Ñ"2Ó"4Ó5×?Ñ?ÓAÀ#À2ÐFÈÓKÈuÑUˆCØ46°v²J”�R˜‘Z×'Ñ'¨¨BÓ/Ô0ÀAˆBÙ?F”b—f‘f˜Z¨¨WÓ5°d°sÑ;ÈBÈwÉKˆGÜ—f‘f˜V S¨'Ó2×8Ñ8Ó:ˆGØ�I‰Ið  _ØœI r¨%¡y°"°U±)¸RÀ¹[È"ÈVÉ*ÐV]Ð_fÐhjÐkômà�z‰z˜AŒ~Ø˜A‘’ð#	ô$ 	�˜�t˜1˜Y˜K s¨8¨*°G¸G¸9ÀFÈ9È+ÐUXÔY]×YbÑYbÓYdÐejÑYjÐknÐXoÐoqÐrÖsðG#tðH 	‡K�K„MØ	�‰‹€BØ‡J�JÐaÔdmÐcoÔpØ�:‰:ÐXÔ[dÐZfÓg×pÑpÓr€DØò iˆØ
�
‰
ÐdÐfgÕhðià‡K�K„MØ‡J�J„LÜ	ˆH”T—Y‘Y“[ Ñ& sÐ+¨5°°
¸'À'ÀÈ&ÐQZÐP[Ð
\Õ]øôS ò 	Ü�M "  R¨ sÐ+Ô,Ü�J‰J�qŒMÝûð	ús   ÃN4Î4	O.Î=&O)Ï)O.Ú__main__)Ú__doc__ÚrequestsrU   rI   rE   rM   rZ   r   r   r   ÚosÚgetenvrK   rH   r"   r   ÚnowÚstrftimer:   r   ÚHEADERSÚSessionr    ÚheadersÚupdater4   rw   Ú__name__© ó    r3   ú<module>r†      s»   ðñ÷ 7× 6× 6Ó 6ß (Û 	à
ˆ"�)‰)�KÐ!2Ó
3€Ø2€	Ø
0€Ø€Øˆx�|‰|‹~¡	¨uÔ 5Ñ5×?Ñ?À
ÓK€Ø€	ð QØ&ñ€ð ˆ(×
Ñ
Ó
€Ø ‡�× Ñ �wÔ òò2:^ðx ˆzÒÙ…Fð r…   