Ë
    ¸¬uj  ã                   óp  — 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	Z	 e	j                  d«       dZdZej                  j                  ej                  j                  e«      «      ZdZ ej$                  dd«      ZdZd	Zd
ZdZdZdZddddœZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z e!dk(  r e «        yy)uG   crawl_hipac.py â€” æ±Ÿè‹�æ·®å®‰å·¥ä¸šå›­åŒºç®¡å§”ä¼š å…¬å‘Šå…¬ç¤ºçˆ¬è™«é    NÚignorezhipac.huaian.gov.cnu   æ·®å®‰å·¥ä¸šå›­åŒºÚ	SEARCH_DBz/root/search.dbz;http://hipac.huaian.gov.cn/articleCommonController/lists.dozhttps://hipac.huaian.gov.cnÚ5632Ú 0000000064a8f16d0164ae1f25dd00ffé“   é
   )ÚnewÚskipÚerrorsc                  ó  — t        j                  t        «      } | j                  d«       | j                  d«       	 | j                  d«       | j                  «        | j                  «        y # t         j                  $ r Y Œ6w xY w)NzPRAGMA journal_mode=WALaY  CREATE TABLE IF NOT EXISTS gov_raw (
        id INTEGER PRIMARY KEY AUTOINCREMENT, site_name TEXT, source_url TEXT,
        page_url TEXT, title TEXT, publish_date TEXT, date_rank INTEGER DEFAULT 0,
        summary TEXT, status TEXT, category TEXT DEFAULT '', visits INTEGER DEFAULT 0,
        content TEXT DEFAULT '', tags TEXT DEFAULT ''
    )z²CREATE VIRTUAL TABLE IF NOT EXISTS gov_search USING fts5(
            title, content, site_name,
            content='gov_raw', content_rowid='id', tokenize='unicode61'
        ))Úsqlite3Úconnectr   ÚexecuteÚOperationalErrorÚcommitÚclose)Úconns    ú /root/gov_crawler/crawl_hipac.pyÚinit_dbr      sr   € Ü�?‰?œ9Ó%€DØ‡L�LÐ*Ô+Ø‡L�Lð 	ô 
ðØ�‰ð ô 	ð 	‡K�K„MØ‡J�J…Løô ×#Ñ#ò Ùðús   ½A/ Á/BÂBc                 ó  — t        j                  t        «      }	 |j                  d| |||t        t
        |df«       |j                  dkD  rS|j                  d|f«      j                  «       }|r	 |j                  d|d   | |t
        f«       t        dxx   dz  cc<   nt        dxx   dz  cc<   |j                  «        y # t         j                  $ r Y ŒIw xY w#  t        d	xx   dz  cc<   Y Œ?xY w# |j                  «        w xY w)
Nz…INSERT OR IGNORE INTO gov_raw (title, content, publish_date, page_url, source_url, site_name, summary, tags) VALUES (?,?,?,?,?,?,?,?)Ú r   z'SELECT id FROM gov_raw WHERE page_url=?z@INSERT INTO gov_search(rowid, title, site_name) VALUES (?,?,?,?)r	   é   r
   r   )r   r   r   r   ÚDOMAINÚ	SITE_NAMEÚtotal_changesÚfetchoneÚIntegrityErrorÚstatsr   )ÚtitleÚurlÚcontentÚdateÚsummaryr   Úrow_ids          r   Ústore_recordr%   (   sï   € Ü�?‰?œ9Ó%€DðØ�‰ð  ]Ø˜W d¨C´¼ÀGÈRÐPô	Rà×Ñ Ò!Ø—\‘\Ð"KÈcÈVÓT×]Ñ]Ó_ˆFÙðØ—L‘LÐ!cØ"(¨¡)¨U°G¼YÐ!GôIô �%‹L˜AÑŒLä�&‹M˜QÑ‹Mð 	�
‰
�øô ×-Ñ-ò Ùðûð
Üˆh‹˜1Ñ�ûà�
‰
�ús<   ›AC Á0C Â#C ÃCÃC ÃCÃC ÃC/Ã-C2 Ã2Dc                 ón  — t         t        |«      t        t        «      dt        dœ}dddddœ}	 | j	                  t
        ||dd	¬
«      }|j                  «       j                  di «      j                  dg «      }g }|D ]Ž  }|j                  dd«      j                  «       j                  dd«      j                  dd«      }|sŒF|j                  dd«      }	|	sŒ[|j                  t        › d|	› �||j                  d«      xs dd d dœ«       Œ� |S # t        $ r}
t        d|› d|
› �«       Y d }
~
y d }
~
ww xY w)Nr   )ÚtopicÚpageÚpagesizer   ÚrdeptidúMozilla/5.0z0application/x-www-form-urlencoded; charset=UTF-8úAhttp://hipac.huaian.gov.cn/cmsweb/zwgk/gyyq/index.html?topic=5632ÚXMLHttpRequest)ú
User-AgentzContent-TypeÚRefererzX-Requested-Withé   F)ÚdataÚheadersÚtimeoutÚverifyÚvalueÚlistr   ú
ú ú
Úpathú/ÚreleaseTimer   )r    r   r"   u     âš ï¸� APIé”™è¯¯(ç¬¬u   é¡µ): )ÚTOPICÚstrÚ	PAGE_SIZEÚRDEPTIDÚpostÚAPI_URLÚjsonÚgetÚstripÚreplaceÚappendÚDETAIL_DOMAINÚ	ExceptionÚprint)ÚsessionÚpage_numr1   r2   ÚrÚitemsÚresultÚitemr   r:   Úes              r   Úfetch_list_pagerR   >   sC  € Ü¤C¨£M¼sÄ9»~ÐXZÔgnÑo€DØ*Ð<nØ]ð  tDñE€GðØ�L‰Lœ t°WÀbÐQVˆLÓWˆØ—‘“—‘˜W bÓ)×-Ñ-¨f°bÓ9ˆØˆØò 	|ˆDØ—H‘H˜W bÓ)×/Ñ/Ó1×9Ñ9¸&À#ÓF×NÑNÈtÐUXÓYˆEÙ˜(Ø—8‘8˜F BÓ'ˆDÙ˜Ø�M‰M¤] O°1°T°FÐ";ÀeÐVZ×V^ÑV^Ð_lÓVmÒVsÐqsÐuxÐvxÐUyÑzÕ{ð	|ð ˆøÜò ÜÐ& x j°°q°cÐ:Ô;Üûðús   ¯C D Ä	D4ÄD/Ä/D4c                 óš  — t        d«      D �]‹  }	 | j                  |dd¬«      }|j                  }t        |«      dk  rt	        j
                  d«       ŒId}t        j                  d|t        j                  «      }|r?|j                  d	«      j                  «       j                  d
d«      j                  dd«      }|st        j                  d|t        j                  «      }|rX|j                  d	«      j                  «       j                  d
d«      j                  dd«      }d|v r|j                  dd	«      d   }d}t        j                  d|t        j                  «      }|s%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  ¬«      }|}d}	t        j                  d|«      }|r|j                  d	«      }	t        j                  dd|xs d«      }
|
r(t        j                  dd|
«      j                  «       d d n|}
|||	|
dœc S  y # t        $ r%}|dk  rt	        j
                  d«       Y d }~�Œ¹d }~ww xY w)Né   r0   F©r3   r4   iô  é   r   z3<meta[^>]*name="ArticleTitle"[^>]*content="([^"]+)"r   r7   r8   r9   z<title>(.*?)</title>z - éÿÿÿÿz@<div[^>]*class="content_body"[^>]*>(.*?)</div>\s*</div>\s*</div>z4<div[^>]*class="content_d"[^>]*>(.*?)</div>\s*</div>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>u(   å…¬å¼€æ—¥æœŸ[ï¼š:]\s*(\d{4}-\d{2}-\d{2})z<[^>]+>z\s+)r   r!   r"   r#   )ÚrangerD   ÚtextÚlenÚtimeÚsleepÚreÚsearchÚIÚgrouprE   rF   ÚDOTALLÚsplitÚsubrI   )rK   r    ÚattemptrM   Úhtmlr   Úmr!   Úcr"   r#   rQ   s               r   Úfetch_detailri   Q   sR  € Ü˜“8ó (*ˆð'	*Ø—‘˜C¨°E�Ó:ˆAØ—6‘6ˆDÜ�4‹y˜3ŠÜ—
‘
˜1”˜xð ˆEÜ—	‘	ÐPÐRVÔXZ×X\ÑX\Ó]ˆAÙØŸ™ ›
×(Ñ(Ó*×2Ñ2°6¸3Ó?×GÑGÈÈcÓR�ÙÜ—I‘IÐ5°t¼R¿Y¹YÓG�ÙØŸG™G A›J×,Ñ,Ó.×6Ñ6°v¸sÓC×KÑKÈDÐRUÓV�EØ ‘~Ø %§¡¨E°1Ó 5°bÑ 9˜ð ˆGÜ—	‘	Ð]Ð_cÔeg×enÑenÓoˆAÙÜ—I‘IÐUÐW[Ô]_×]fÑ]fÓg�ÙØ—G‘G˜A“J×$Ñ$Ó&�Ü—F‘FÐ7¸¸QÄbÇiÁiÔPR×PTÑPTÁnÔU�Ü—F‘FÐ5°r¸1ÄBÇIÁIÌbÏdÉdÁNÔS�Ø�ð ˆDÜ—	‘	ÐEÀtÓLˆAÙ˜Ÿ™ ›�$ô —f‘f˜Z¨¨Wª]¸Ó;ˆGÙDK”b—f‘f˜V S¨'Ó2×8Ñ8Ó:¸4¸CÑ@ÐQVˆGØ"¨wÀÐQXÑYÒYðM(*ðR øô ò 	*Ø˜Š{œDŸJ™J qœMÿùð	*ús   ‘AJÁIJÊ	K
Ê%KËK
c           	      ó  — t        j                  t        «      }|j                  d|d   t        f«      j                  «       }|j                  «        |ryt        d|d   d d › d�dd	¬
«       t        | |d   «      }|st        d«       t        dxx   dz  cc<   yt        |d   xs |d   |d   |d   |j                  d«      xs |j                  dd«      |d   «       t        dt        |j                  dd«      «      › d�«       y	)Nz6SELECT 1 FROM gov_raw WHERE page_url=? AND site_name=?r    Fu     ðŸ“„ r   é(   z...r   T)ÚendÚflushu    âœ— è¯¦æƒ…å¤±è´¥r   r   r!   r"   r#   u    âœ… ÚB)r   r   r   r   r   r   r   rJ   ri   r   r%   rD   r[   )rK   rP   r   ÚexistsÚds        r   Úprocess_itemrq   }   sÿ   € Ü�?‰?œ9Ó%€DØ�\‰\ÐRÐUYÐZ_ÑU`ÔbkÐTlÓm×vÑvÓx€FØ‡J�J„LÙ�eÜ	ˆG�D˜‘M # 2Ð&Ð' sÐ
+°¸4Õ@Ü�W˜d 5™kÓ*€AÙÜÐ!Ô"¤E¨(£O°qÑ$8£OÀÜ��7‘Ò,˜t G™}¨d°5©k¸1¸Y¹<ÈÏÉÈvËÒInÐZ^×ZbÑZbÐciÐkmÓZnÐpqÐr{Ñp|Ô}Ü	ˆE”#�a—e‘e˜I bÓ)Ó*Ð+¨1Ð
-Ô.Øó    c                  óà  — dd l } | j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dt        d¬«       |j	                  «       }t        «        |j                  rt        d«       y t        j                  «       }|j                  j                  d	d
i«       |j                  ddd¬«       t        j                  «       }d}|j                  rt        nd}t!        d|dz   «      D ]”  }|j"                  r||j"                  k\  r nwt%        ||«      }|s ngt        d|› dt'        |«      › d�«       |D ]E  }	|j"                  r||j"                  k\  r Œmt)        ||	«      r|dz  }t        j*                  d«       ŒG Œ– t        j                  «       |z
  }
t        dd› dt,        d   › dt,        d   › dt,        d   › d|
d›d�«       t,        d   dkD  ry y )Nr   z--fullÚ
store_true)Úactionz--syncz--test)ÚtypeÚdefaultu,   --sync å·²å¼ƒç”¨ï¼Œè„šæœ¬ç›´æŽ¥å†™ search.dbr.   r+   r,   r0   FrU   r   u   ðŸ“ƒ ç¬¬u   é¡µ (u   æ�¡)g      à?r9   z2==================================================u   
ðŸ�� æ–°å¢ž:r	   u    è·³è¿‡:r
   u    é”™è¯¯:r   u   
â�±ï¸� z.0fÚs)ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsr   ÚsyncrJ   ÚrequestsÚSessionr2   ÚupdaterD   r\   ÚfullÚTOTAL_PAGESrY   ÚtestrR   r[   rq   r]   r   )ry   ÚparserÚargsrx   ÚstartÚ	total_newÚ	max_pagesÚpnrN   rP   Úelapseds              r   ÚmainrŒ   Š   sÆ  € ÛØ×$Ñ$Ó&€FØ
×Ñ˜¨ÐÔ6Ø
×Ñ˜¨ÐÔ6Ø
×Ñ˜¤s°AÐÔ6Ø×ÑÓ€DÜ„IØ‡y‚y”%ÐFÔGÈä×ÑÓ€AØ‡I�I×Ñ�l MÐ2Ô3Ø‡E�EÐ
MÐWYÐbg€EÔhä�I‰I‹K€EØ€IØ#Ÿyšy•¨a€Iä�A�y 1‘}Ó%ò ˆØ�9Š9˜ d§i¡iÒ/±Ü  2Ó&ˆÙ‘eÜ�˜˜˜E¤# e£* ¨TÐ2Ô3Øò 	ˆDØ�yŠy˜Y¨$¯)©)Ò3±UÜ˜A˜tÔ$ i°1¡n iÜ�J‰J�s�Oñ	ðô �i‰i‹k˜EÑ!€GÜ	ˆBˆvˆh�n¤U¨5¡\ N°(¼5À¹=¸/ÈÔRWÐX`ÑRaÐQbÐbkÐlsÐtwÐkxÐxyÐ
zÔ{ÜˆU�|�aÒ˜Ðrr   Ú__main__)"Ú__doc__Úosr^   Úsysr\   rC   r   Ú
subprocessr   ÚwarningsÚfilterwarningsr   r:   ÚdirnameÚabspathÚ__file__ÚBASE_DIRr   Úgetenvr   rB   rH   r=   r@   rƒ   r?   r   r   r%   rR   ri   rq   rŒ   Ú__name__© rr   r   ú<module>r›      sÆ   ðá Mß 3× 3× 3Ó 3ß Ø €× Ñ ˜Ô !Ø	€Ø	€à�7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨8Ó4Ó5€Ø €	ØˆB�I‰I�kÐ#4Ó5€	Ø
G€Ø-€Ø€Ø
,€Ø€Ø€	à˜1¨Ñ*€òò&ò,ò&*òXòð@ ˆzÒÙ…Fð rr   