Ë
    ¸¬ujÆ"  ã                   ó˜  — 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d dl	Z	d dl
Zd dlmZ d dlmZ e j                  j!                  e j                  j#                  e«      «      Z e j(                  dd«      ZdZdZdZd	Zd
ZdZ e	j8                  «       ZddiZdd„Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'e(dk(  r e'«        yy)é    N)Údatetime)ÚurljoinÚ	SEARCH_DBz/root/search.dbu!   æ–°ç–†å‡†ä¸œç»�æµŽæŠ€æœ¯å¼€å�‘åŒºzwww.xjzdkfq.cnzhttps://www.xjzdkfq.cnz&https://www.xjzdkfq.cn/p163/sthj1.htmlz-https://www.xjzdkfq.cn/p163/sthj1_{page}.htmlé   z
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	                  ||t
        ¬«      }|j                  «       }|j                  dd¬«      }|S # t        $ r
}Y d }~y d }~ww xY w)N)Úheaders)ÚtimeoutÚcontextzutf-8Úreplace)Úerrors)	ÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚCTXÚreadÚdecodeÚ	Exception)Úurlr	   ÚreqÚrespÚrawÚtextÚes          ú"/root/gov_crawler/crawl_xjzdkfq.pyÚhttp_getr   #   sp   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CðÜ�~‰~×%Ñ% c°7ÄCÐ%ÓHˆØ�i‰i‹kˆØ�z‰z˜'¨)ˆzÓ4ˆØˆøÜò Üûðús   §A
A2 Á2	BÂ Bc                 óz  — g }t        «       }t        j                  d| t        j                  «      }|s%t        j                  d| t        j                  «      }|r|j	                  d«      n| }t        j
                  d|t        j                  «      D ]¥  }|j	                  d«      j                  «       }t        j                  dd|j	                  d«      «      j                  «       }|r|sŒ[|j                  d«      st        t        |«      }||v rŒ�|j                  |«       |j                  ||d	œ«       Œ§ |S )
u#   æ��å�– xxgkzd åŒºåŸŸçš„æ–‡ç« é“¾æŽ¥z-class="xxgkzd"[^>]*>(.*?)<div[^>]*id="myPage"zclass="xxgkzd"[^>]*>(.*?)</div>é   z8<a[^>]*href="(/p163/sthj1/\d+/\d+\.html)"[^>]*>(.*?)</a>ú<[^>]+>Ú é   Úhttp)Útitler   )ÚsetÚreÚsearchÚDOTALLÚgroupÚfinditerÚstripÚsubÚ
startswithr   ÚBASE_URLÚaddÚappend)ÚhtmlÚitemsÚ	seen_urlsÚarea_mÚareaÚmÚhrefr$   s           r   Úparse_list_pager8   .   s  € à€EÜ“€Iô �Y‰YÐGÈÌrÏyÉyÓY€FÙÜ—‘Ð=¸tÄRÇYÁYÓOˆÙ$ˆ6�<‰<˜Œ?¨$€Dô �[‰[ØCØŒb�i‰ióò 4ˆð �w‰w�q‹z×ÑÓ!ˆÜ—‘�z 2 q§w¡w¨q£zÓ2×8Ñ8Ó:ˆÙ™DØØ�‰˜vÔ&Üœ8 TÓ*ˆDØ�9ÑØØ�‰�dÔØ�‰˜u¨TÑ2Õ3ð4ð €Ló    c                 ó  — t        | «      }|syd}t        j                  d|«      }|r4t        j                  dd|j	                  d«      «      j                  «       }d}t        j                  d| «      }|r$|j	                  d«      }|dd › d|dd	 › d|d	d
 › �}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  ¬«      }t        j                  dd|«      }t        |«      dkD  r|dd dz   }|||dœS )u.   èŽ·å�–è¯¦æƒ…é¡µï¼šæ ‡é¢˜ã€�æ­£æ–‡HTMLã€�æ—¥æœŸNr!   z<title>([^<]+)</title>u/   _å›½å®¶çº§æ–°ç–†å‡†ä¸œç»�æµŽæŠ€æœ¯å¼€å�‘åŒº\s*$r   z/(\d{8})/\d+\.htmlé   ú-é   é   z'<font[^>]*id="?Zoom"?[^>]*>(.*?)</font>z<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>z<p>\s*<br\s*/?>\s*</p>i'  z...)r$   ÚcontentÚdate)	r   r&   r'   r,   r)   r+   r(   ÚIÚlen)	r   r1   r$   ÚtmrA   ÚdmÚdr@   Úcms	            r   Ú
get_detailrH   K   si  € ä�C‹=€DÙØð €EÜ	�‰Ð,¨dÓ	3€BÙ	Ü—‘ÐIÈ2ÈrÏxÉxÐXYË{Ó[×aÑaÓcˆð €DÜ	�‰Ð(¨#Ó	.€BÙ	Ø�H‰H�Q‹KˆØ�B�Q�%�˜˜!˜A˜a˜&˜  1 Q q 6 (Ð+ˆð €GÜ	�‰Ø2ØŒb�i‰ió
€Bñ 
Ø—(‘(˜1“+×#Ñ#Ó%ˆÜ—&‘&Ð5°r¸7Ì"Ï)É)ÔTV×TXÑTXÉ.ÔYˆÜ—&‘&Ð3°R¸ÌÏ	É	ÔRT×RVÑRVÉÔWˆÜ—&‘&Ð2°B¸Ó@ˆÜˆw‹<˜%ÒØ˜f˜u�o¨Ñ-ˆGð ØØñð r9   c                 ó8  — | syt        j                  dd| «      }t        j                  dd|«      }t        j                  dd|«      }t        j                  |«      }t        j                  dd|«      }t        j                  d	d
|«      }|j	                  «       S )Nr!   z</(p|div|li|h[1-6]|tr|td|th)>z	</\1>\n\nz	<br\s*/?>ú
r    z[ \t]+ú z\n{3,}z

)r&   r,   Úhtml_modÚunescaper+   )Úhtml_contentr   s     r   Úextract_plain_textrO   r   s   € ÙØÜ�6‰6Ð2°LÀ,ÓO€DÜ�6‰6�,  dÓ+€DÜ�6‰6�*˜b $Ó'€DÜ×Ñ˜TÓ"€DÜ�6‰6�)˜S $Ó'€DÜ�6‰6�)˜V TÓ*€DØ�:‰:‹<Ðr9   c                 óò   ‡— | dz   |z   j                  «       Šg }dg d¢fdg d¢fdg d¢fdg d	¢fd
g d¢fdg d¢ffD ]+  \  }}t        ˆfd„|D «       «      sŒ|j                  |«       Œ- dj                  |«      S )NrK   u   çŽ¯è¯„é˜¶æ®µ)u   çŽ¯è¯„u   çŽ¯å¢ƒå½±å“�è¯„ä»·u   å¾�æ±‚æ„�è§�u   ç¬¬ä¸€æ¬¡å…¬ç¤ºu   å®¡æ‰¹æŠ¥æ‰¹)u   å®¡æ‰¹u   æ‰¹å¤�u	   æ‹Ÿæ‰¹å¤�u   æŠ¥æ‰¹u   è®¸å�¯u   æ‰¹å‡†u   ç«£å·¥éªŒæ”¶)u   éªŒæ”¶u   ç«£å·¥u	   è¯•è¿�è¡Œu   æ‹›æ ‡é‡‡è´­)u   æ‹›æ ‡u   æŠ•æ ‡u   é‡‡è´­u   è§„åˆ’è®¾è®¡)u   è§„åˆ’u   è®¾è®¡u   å�¯ç ”u   å�¯è¡Œæ€§ç ”ç©¶u   é€‰å�€õ   å®‰å…¨è¯„ä»·)rQ   u   å®‰è¯„u   å®‰å…¨é¢„è¯„ä»·u   å®‰å…¨éªŒæ”¶c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0ÚkwÚts     €r   ú	<genexpr>zcategorize.<locals>.<genexpr>ˆ   s   øè ø€ Ò%˜2ˆr�QŒwÑ%ùs   ƒú,)ÚlowerÚanyr0   Újoin)r$   r   ÚtagsÚstageÚkwsrV   s        @r   Ú
categorizer_   }   s–   ø€ Ø	�‰�tÑ	×"Ñ"Ó$€AØ€Dà	Ò\Ð]Ø	ÒXÐYØ	Ò:Ð;Ø	Ò7Ð8Ø	ÒTÐUØ	ÒVÐWðò 	‰
ˆˆsô Ó% Ô%Õ%Ø�K‰K˜Õð	ð �8‰8�D‹>Ðr9   c                  óî   — t        j                  t        «      } | j                  d«       	 | j                  d«       | j                  «        | j                  «        y# t         j                  $ r Y Œ6w xY w)u)   ç¡®ä¿�search.dbæœ‰gov_rawå’Œgov_searchè¡¨aa  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'
        )N)Úsqlite3Úconnectr   ÚexecuteÚOperationalErrorÚcommitÚclose)Úconns    r   Úensure_tablerh   �   se   € ä�?‰?œ9Ó%€DØ‡L�Lð 	ô 
ðØ�‰ð ô 	ð 	‡K�K„MØ‡J�J…Løô ×#Ñ#ò Ùðús   ¬A ÁA4Á3A4c                 ó¬   — t        j                  t        «      }|j                  d| t        f«      }|j                  «       }|j                  «        |d uS )Nz7SELECT id FROM gov_raw WHERE page_url=? AND site_name=?)ra   rb   r   rc   Ú	SITE_NAMEÚfetchonerf   )r   rg   ÚcurÚrs       r   Úis_url_crawledrn   ¡   sF   € Ü�?‰?œ9Ó%€DØ
�,‰,ÐPÐSVÔXaÐRbÓ
c€CØ�‰‹€AØ‡J�J„LØ�Dˆ=Ðr9   c                 ó‚  — | d   }| j                  dd«      }| j                  dt        |«      d d «      }| j                  dd«      }| d   }t        ||«      }t        j                  t
        «      }	 |j                  d||||t        t        ||f«       |j                  d	kD  r@|j                  d
|f«      j                  «       }|r	 |j                  d|d	   |t        f«       |j                  «        |j                  d	kD  |j                  «        S # t        j                  $ r Y ŒDw xY w# |j                  «        w xY w)Nr   r@   r!   Úsummaryé,  rA   r$   z…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 (?,?,?))ÚgetrO   r_   ra   rb   r   rc   ÚDOMAINrj   Útotal_changesrk   ÚIntegrityErrorre   rf   )	Úitemr   r@   rp   rA   r$   Úcatrg   Úrow_ids	            r   Ú
store_itemry   ¨   s0  € Ø
ˆu‰+€CØ�h‰h�y "Ó%€GØ�h‰h�yÔ"4°WÓ"=¸d¸sÐ"CÓD€GØ�8‰8�F˜BÓ€DØ�‰M€EÜ
�U˜GÓ
$€Cä�?‰?œ9Ó%€DðØ�‰ð'ð �G˜T 3¬´	¸7ÀCÐHô		
ð ×Ñ Ò!Ø—\‘\Ð"KÈcÈVÓT×]Ñ]Ó_ˆFÙðØ—L‘LØXØ ™ E¬9Ð5ôð 	�‰ŒØ×!Ñ! AÑ%à�
‰
�øô ×-Ñ-ò Ùðûð
 	�
‰
�ús1   Á3AD, ÃD Ã$D, ÄD)Ä&D, Ä(D)Ä)D, Ä,D>c                  óB  — t         j                  dd  } d| v }|r	t        }d}nK| D �cg c]  }|j                  d«      sŒ|‘Œ }}|r t	        |d   j                  d«      d   «      nd}d|› d�}t        d	t        › d
|› d�«       t        dt        › d|› d�«       t        «        t        «        d}d}t        d|dz   «      D �];  }|dk(  rt        }	nt        j                  |¬«      }	t        |	«      }
|
st        d|d›d|› d�«       ŒGt        |
«      }|st        d|d›d|› d�«       Œhd}d}|D ]ˆ  }t        |d   «      r|dz  }|dz  }Œt!        |d   «      }|rH|d   xs |d   |d<   |d   xs d|d<   |d   xs d|d<   t#        |j%                  dd«      «      d d |d<   t'        |«       |dz  }|dz  }ŒŠ t        d|d›d|› dt)        |«      › d|› d|› d�d z   d!¬"«       t+        j,                  |rd#nd$«       �Œ> t        «        t        d%|› d&|› �«       y c c}w )'Nr   z--fullu   å…¨é‡�z--pages=r   ú=u	   å¢žé‡�ï¼ˆu   é¡µï¼‰u   ðŸ”� u   çˆ¬è™« â€” u   æ¨¡å¼�u     æ€»é¡µæ•°: u   , æœ¬æ¬¡çˆ¬å�–: u   é¡µ)Úpagez  [pÚ2dú/u   ] âœ— èŽ·å�–åˆ—è¡¨é¡µå¤±è´¥u   ] âœ— æœªè§£æž�åˆ°æ�¡ç›®r   r$   r@   r!   rA   rq   rp   u   ] âœ“ u   æ�¡ (æ–°å¢žu    è·³è¿‡ú)z                    ú)Úendg      à?g333333Ó?u   
ðŸ“Š å®Œæˆ�ï¼�æ–°å¢ž: u    | è·³è¿‡: )ÚsysÚargvÚTOTAL_PAGESr-   ÚintÚsplitÚprintrj   rh   ÚrangeÚLIST_TEMPLATEÚLIST_TEMPLATE_NÚformatr   r8   rn   rH   rO   rr   ry   rC   ÚtimeÚsleep)ÚargsÚ	full_modeÚpages_to_crawlÚmodeÚaÚpages_matchÚ	new_totalÚ
skip_totalr|   r   r1   r2   Úpage_newÚ	page_skiprv   Údetails                   r   Úmainr™   É   s�  € Ü�8‰8�A�Bˆ<€DØ˜DÐ €IáÜ$ˆØ‰à"&ÖC˜Q¨!¯,©,°zÕ*B’qÐCˆÐCÙ>Iœ˜[¨™^×1Ñ1°#Ó6°qÑ9Ô:ÈqˆØ˜>Ð*¨&Ð1ˆä	ˆE”)�˜K¨ v¨VÐ
4Ô5Ü	ˆMœ+˜Ð&6°~Ð6FÀcÐ
JÔKÜ	„Gä„Nà€IØ€JÜ�a˜¨!Ñ+Ó,ó $.ˆØ�1Š9Ü‰Cä!×(Ñ(¨dÐ(Ó3ˆCä˜‹}ˆÙÜ�D˜˜b˜	  >Ð"2Ð2MÐNÔOØä Ó%ˆÙÜ�D˜˜b˜	  >Ð"2Ð2JÐKÔLØàˆØˆ	Øò 	ˆDÜ˜d 5™kÔ*Ø˜Q‘�	Ø˜a‘�
Øä  U¡Ó,ˆFÙØ & w¡Ò @°4¸±=��W‘Ø"(¨Ñ"3Ò"9°r��Y‘Ø% f™~Ò3°��V‘Ü"4°V·Z±ZÀ	È2Ó5NÓ"OÐPTÐQTÐ"U��Y‘ä�tÔØ˜‰MˆHØ˜‰N‰Ið	ô" 	��T˜"�I˜Q˜~Ð.¨f´S¸³Z°LÀÈHÈ:ÐU\Ð]fÐ\gÐghÐiÐltÑtÐz~ÕÜ�
‰
™)‘3¨Ö-ðI$.ôL 
„GÜ	Ð$ Y K¨{¸:¸,Ð
GÕHùòg Ds
   §H¾HÚ__main__)é   ))Úosr‚   r&   ra   ÚhashlibrŒ   Ú
subprocessr1   rL   ÚsslÚurllib.requestr   r   Úurllib.parser   ÚpathÚdirnameÚabspathÚ__file__ÚBASE_DIRÚgetenvr   rj   rs   r.   r‰   rŠ   r„   Ú_create_unverified_contextr   r   r   r8   rH   rO   r_   rh   rn   ry   r™   Ú__name__rS   r9   r   ú<module>rª      sÝ   ðã 	ð÷ ^× ]× ]× ]× ]Ý Ý  ð �7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨8Ó4Ó5€ØˆB�I‰I�kÐ#4Ó5€	à/€	Ø	€Ø#€Ø8€ØA€Ø€ð %€c×$Ñ$Ó&€àð 3ð€ó
òò:%òN	òò ò(òòB;Iðz ˆzÒÙ…Fð r9   