Ë
    ¸¬ujS  ã                   óÚ   — 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ZdZ	dZ
dZdZ ej                  dd	«      Z ej                  «       Zd
diZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u€   
é¢�å·žåŒºé©¬å¯¨é•‡ â€” å›žåº”å…³åˆ‡ çˆ¬è™«
site: www.yingzhou.gov.cn
æ �ç›®: /OpennessContent/showList/1232/102465/page_N.html
é    Nu   é¢�å·žåŒºé©¬å¯¨é•‡-å›žåº”å…³åˆ‡zwww.yingzhou.gov.cnzhttps://www.yingzhou.gov.cnz,/OpennessTarget/1232/102465/page_{page}.htmlé   Ú	SEARCH_DBz/root/search.dbz
User-Agentz[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/125.0.0.0 Safari/537.36c                 óê   — t         j                  j                  | t        ¬«      }	 t         j                  j	                  |dt
        ¬«      }|j                  «       j                  dd¬«      S #  Y y xY w)N)Úheadersé   )ÚtimeoutÚcontextzutf-8Úreplace)Úerrors)ÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚCTXÚreadÚdecode)ÚurlÚreqÚresps      ú#/root/gov_crawler/crawl_yingzhou.pyÚhttp_getr      s^   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CðÜ�~‰~×%Ñ% c°2¼sÐ%ÓCˆØ�y‰y‹{×!Ñ! '°)Ð!Ó<Ð<øØ‘4ús   §AA. Á.A2c                 ó"  — g }t        j                  d| «      D ]s  }|j                  d«      |j                  d«      j                  «       |j                  d«      j                  «       }}}|sŒU|j	                  |t
        |z   |dd dœ«       Œu |S )uN   è§£æž�åˆ—è¡¨é¡µï¼š<li><a href=... title=...>æ ‡é¢˜</a><span>æ—¥æœŸ</span></li>z_<a href="(/OpennessContent/show/\d+\.html)" title="([^"]*)"[^>]*>.*?</a>\s*<span>([^<]+)</span>é   é   é   Né
   )Útitler   Úpublish_date)ÚreÚfinditerÚgroupÚstripÚappendÚBASE)ÚhtmlÚitemsÚmÚhrefr   Údates         r   Ú
parse_listr+      sŒ   € à€EÜ�[‰[ØjØóò 
ˆð ŸG™G A›J¨¯©°«
×(8Ñ(8Ó(:¸A¿G¹GÀA»J×<LÑ<LÓ<N�TˆeˆÚØ�L‰LØÜ˜d‘{Ø $ S b 	ñõ ð
ð €Ló    c                 ój   — t        j                  d| «      }|rt        |j                  d«      «      S dS )Nzpagecount="(\d+)"r   )r    ÚsearchÚintr"   )r&   r(   s     r   Úget_total_pagesr0   *   s,   € Ü
�	‰	Ð&¨Ó-€AÙŒ3ˆq�w‰w�q‹z‹?Ð& QÐ&r,   c                 óh  — t        | «      }|sy d}t        j                  d|«      }|r|j                  d«      }d}t        j                  d|«      }|r|j                  d«      j	                  «       }d}t        j                  d|t        j
                  «      }|r‘|j                  d«      }t        j                  dd|t        j
                  t        j                  z  ¬«      }t        j                  dd|t        j
                  t        j                  z  ¬«      }|j	                  «       }d|||d	œS )
NÚ u(   å�‘å¸ƒæ—¶é—´[ï¼š:]\s*(\d{4}-\d{2}-\d{2})r   u   æ�¥æº�[ï¼š:]\s*([^<]+)z#id="zoom"[^>]*>(.*?)</div>\s*</div>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>)r   Úcontentr*   Úsource)r   r    r.   r"   r#   ÚDOTALLÚsubÚI)r   r&   r*   Úmdr5   Úmsr4   Úmcs           r   Úfetch_detailr<   .   sñ   € Ü�C‹=€DÙ˜à€DÜ	�‰Ð>ÀÓ	E€BÙ	�"—(‘(˜1“+ˆ4à€FÜ	�‰Ð,¨dÓ	3€BÙ	�B—H‘H˜Q“K×%Ñ%Ó'ˆ6à€GÜ	�‰Ð9¸4ÄÇÁÓ	K€BÙ	Ø—(‘(˜1“+ˆÜ—&‘&Ð5°r¸7Ì"Ï)É)ÔTV×TXÑTXÉ.ÔYˆÜ—&‘&Ð3°R¸ÌÏ	É	ÔRT×RVÑRVÉÔWˆØ—-‘-“/ˆØ G°TÀVÑLÐLr,   c                  óî   — t        j                  t        «      } | j                  d«       	 | j                  d«       | j                  «        | j                  «        y # t         j                  $ r Y Œ6w xY w)NaY  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    r   Úinit_dbrE   C   s_   € Ü�?‰?œ9Ó%€DØ‡L�Lð 	ô 
ð*Ø�‰ð ô 	ð
 	‡K�K„M�4—:‘:•<øô ×#Ñ#Ò)¡TÐ)ús   ¬A ÁA4Á3A4c                  ó|  — dd l } | j                  «       }|j                  dd¬«       |j                  dt        d¬«       |j	                  «       }t        «        t        j                  t        «      }|j                  «       }t        t        t        j                  d¬«      z   «      }|st        d	«       y t        |«      }t!        |«      }|j"                  r|n|j$                  }|j"                  rd
nd|› d�}	d}
t        dt&        › d|	› d|› d�«       dx}}t)        d|dz   «      D �]Î  }|dkD  r4t        t        t        j                  |¬«      z   «      }|sŒ2t        |«      }|st        d|d›d|› d�«       ŒSdx}}|D �](  }|j+                  d|d   t&        f«      j-                  «       r|dz  }|dz  }Œ8t/        |d   «      }|rL|j1                  dd«      }|d   }|j1                  d|j1                  dd«      «      }|j1                  dd«      }nd}|d   }|j1                  dd«      }d}|s|dz  }|dz  }Œ¼|rd|› �nd}	 |j+                  d||||d   t2        t&        |f«       |j4                  dkD  r0|j6                  }|j+                  d|||t&        f«       |dz  }|dz  }�Œ+ |j;                  «        t        d|d›d|› dt=        |«      › d |› d!|› d"�«       t?        j@                  d#«       �ŒÑ |jC                  «        t        d$|› d%|› �«       y # t        j8                  $ r Y Œ‘w xY w#  Y �Œ¹xY w)&Nr   z--fullÚ
store_true)Úactionz--pagesr   )ÚtypeÚdefault)Úpageu   âœ— HTTPå¤±è´¥u   å…¨é‡�u   å¢žé‡�(u   é¡µ)u   ðŸ”� u    â€” z (z  [pÚ2dú/u   ] âœ— æ— æ•°æ�®z6SELECT 1 FROM gov_raw WHERE page_url=? AND site_name=?r   r4   r2   r   r*   r   r5   u	   æ�¥æº�ï¼šzzINSERT OR IGNORE INTO gov_raw (title, content, publish_date, page_url, source_url, site_name, tags) VALUES (?,?,?,?,?,?,?)z@INSERT INTO gov_search(rowid, title, site_name) VALUES (?,?,?,?)u   ] âœ“ u   æ�¡ (æ–°å¢žu    è·³è¿‡ú)g333333Ó?u   
ðŸ“Š å®Œæˆ�ï¼�æ–°å¢ž: u    | è·³è¿‡: )"ÚargparseÚArgumentParserÚadd_argumentr/   Ú
parse_argsrE   r>   r?   r   Úcursorr   r%   ÚLIST_APIÚformatÚprintr+   r0   ÚfullÚpagesÚ	SITE_NAMEÚranger@   Úfetchoner<   ÚgetÚDOMAINÚrowcountÚ	lastrowidÚIntegrityErrorrB   ÚlenÚtimeÚsleeprC   )rO   ÚparserÚargsrD   Úcurr&   r'   Útotal_pagesÚpages_to_crawlÚmodeÚtotalÚ	new_totalÚ
skip_totalrK   Úpage_newÚ	page_skipÚitemÚdetailr4   r   r*   r5   ÚtagsÚrow_ids                           r   Úmainrs   S   sZ  € ÛØ×$Ñ$Ó&€FØ
×Ñ˜¨ÐÔ6Ø
×Ñ˜	¬°QÐÔ7Ø×ÑÓ€DÜ„IÜ�?‰?œ9Ó%€D¨T¯[©[«] sô ”Dœ8Ÿ?™?°˜?Ó2Ñ2Ó3€DÙ”Ð'Ô(¨&Ü�tÓ€EÜ! $Ó'€KØ$(§I¢I‘[°4·:±:€NØ—y’y‰8¨°Ð/?¸tÐ&D€DØ€EÜ	ˆE”)�˜E $  r¨+¨°dÐ
;Ô<ØÐ€I�
Ü�a˜¨!Ñ+Ó,ó "ˆØ�!Š8ÜœD¤8§?¡?¸ ?Ó#=Ñ=Ó>ˆDÙ˜Ü˜tÓ$ˆEÙÜ�D˜˜b˜	  >Ð"2°/ÐBÔCÀXØ Ð ˆ�9Øó 	ˆDØ�{‰{ÐSÐVZÐ[`ÑVaÔclÐUmÓn×wÑwÔyØ˜Q‘�	 
¨a¡ 
°Ü! $ u¡+Ó.ˆFÙØ Ÿ*™* Y°Ó3�Ø˜W™�Ø—z‘z &¨$¯(©(°>À2Ó*FÓG�ØŸ™ H¨bÓ1‘à� d¨7¡m˜e¸D¿H¹HÀ^ÐUWÓ<X°TÐceÐZ`ÙØ˜Q‘�	 
¨a¡ 
°Ù+1�Y˜v˜hÑ'°rˆDð	Ø—‘ð QØ˜G T¨4°©;¼Ä	È4ÐPôRð —<‘< !Ò#Ø Ÿ]™]�FØŸ™Ð%gÐjpÐrwð  zAô  CLð  jMô  Nà ‘M�H 9°¡> 9ùð-	ð0 	�‰ŒÜ��T˜"�I˜Q˜~Ð.¨f´S¸³Z°LÀÈHÈ:ÐU\Ð]fÐ\gÐghÐiÔjÜ�
‰
�3ŽðE"ðF 	‡J�J„LÜ	Ð$ Y K¨{¸:¸,Ð
GÕHøô #×1Ñ1Ò7±4Ð7ûà’Dús0   É?L6ÊLÊ!
L6ÌL3Ì0L6Ì2L3Ì3L6Ì6L;Ú__main__)Ú__doc__r    Úosr>   rb   Úurllib.requestr   ÚsslrY   r]   r%   rT   Ú	PAGE_SIZEÚgetenvr   Ú_create_unverified_contextr   r   r   r+   r0   r<   rE   rs   Ú__name__© r,   r   ú<module>r~      sŽ   ðñ÷
 2× 1× 1à-€	Ø	€Ø$€Ø9€Ø€	àˆB�I‰I�kÐ#4Ó5€	Ø$€c×$Ñ$Ó&€ØÐvÐ
w€òòò 'òMò* ò 7Iðr ˆzÒ™4�6Ðr,   