Ë
    €Ûµ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Z	ddl
Z	ddlmZ ddlZej                  e_         ej                   «       Zde_        ej&                  e_        dZdZdZej0                  j3                  dd	«      Zd
diZdZ eej<                  «      D ]=  \  ZZ e dk(  sŒedz    e!ej<                  «      k  sŒ% e"ej<                  edz      «      Z n d„ Z#d„ Z$d„ Z%d„ Z&e'dk(  r e&«        yy)u2   Crawl gzfyht.com - è´µå·žé€¢æº�æ�’é€š é¡¹ç›®å…¬ç¤ºé    N)ÚBeautifulSoupFzhttps://www.gzfyht.comu   è´µå·žé€¢æº�æ�’é€š-é¡¹ç›®å…¬ç¤ºu   ä¼�ä¸šçŽ¯è¯„Ú	SEARCH_DBz/root/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z--pagesé   c                 ó  — t         j                  j                  | t        ¬«      }t         j                  j	                  |dt
        ¬«      }|j                  «       }|d d dk(  rt        j                  |«      }|j                  dd¬«      S )	N)Úheadersé   )ÚtimeoutÚcontexté   s   ‹zutf-8Úreplace)Úerrors)
ÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚctxÚreadÚgzipÚ
decompressÚdecode)ÚurlÚreqÚrespÚraws       ú!/root/gov_crawler/crawl_gzfyht.pyÚfetchr      sp   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CÜ�>‰>×!Ñ! #¨r¼3Ð!Ó?€DØ
�)‰)‹+€CØ
ˆ2ˆA€w�+ÒÜ�o‰o˜cÓ"ˆØ�:‰:�g iˆ:Ó0Ð0ó    c                 óÚ  — g }t        | d«      }i }|j                  dd¬«      D ]«  }|d   }d|vsd|vrŒ|j                  d¬«      }|rt        |«      d	k  rŒ4t	        j
                  d
|«      rŒK|j                  d«      s&|j                  d«      r	t        |z   nt        dz   |z   }||vst        |«      t        ||   d   «      kD  sŒ¤||dœ||<   Œ­ t        |j                  «       «      }|S )Núhtml.parserÚaT)Úhrefr"   z/nd.jspzfromColId=105©Ústripé   z^\d{4}-\d{2}-\d{2}$Úhttpú/Útitle)r(   r   )
r   Úfind_allÚget_textÚlenÚreÚmatchÚ
startswithÚBASE_URLÚlistÚvalues)ÚhtmlÚitemsÚsoupÚlink_mapr!   ÚhÚts          r   Úextract_itemsr8   #   só   € Ø€EÜ˜˜}Ó-€DØ€HØ�]‰]˜3 Tˆ]Ó*ò 1ˆØˆf‰IˆØ˜AÑ ¸Ñ!9ØØ�J‰J˜TˆJÓ"ˆÙ”C˜“F˜Q’JØÜ�8‰8Ð*¨AÔ.ØØ�|‰|˜FÔ#Ø !§¡¨SÔ 1”˜1’´xÀ#±~ÈÑ7IˆAØ�HÑ¤ A£¬¨X°a©[¸Ñ-AÓ)BÓ BØ$%¨aÑ0ˆH�QŠKð1ô �—‘Ó"Ó#€EØ€Lr   c                 ó  — t        | d«      }d}|j                  d«      }|r|j                  d¬«      }d}t        j                  d| «      D ]  }|j                  d«      } n d}g }|j                  d«      }	|	s>d	D ]9  }
|j                  |
«      }|sŒt        |j                  d
d¬«      «      dkD  sŒ7|}	 n |	s||dg dœS g }|	j                  d«      }|	j                  g d¢d¬«      D �]a  }|j                  dk(  r2d}|D ](  }||j                  d¬«      v s||j                  v sŒ&d} n |rŒE|j                  dk(  r$d}|D ]  }||k7  sŒ	||j                  v sŒd} n |rŒx|j                  dk(  r³|j                  dd«      }d|j                  «       v rŒ¬|j                  d«      rd|z   }nG|j                  d«      r
t        |z   }n,|j                  d«      s|j                  dd«      d   dz   |z   }|j                  dd«      xs d}|j                  d|› d|› d�«       �Œ:|j                  d
d¬«      }|s�ŒQ|j                  |«       �Œd dj!                  d„ |D «       «      }|j#                  d d
«      j#                  d!d
«      }|||g dœS )"Nr    Ú Úh1Tr#   z(\d{4}-\d{2}-\d{2})r   z.richContent)z[class*=content]z[class*=article]z.textz#contentú é2   )r(   ÚdateÚcontentÚattachmentsÚtable)ÚprA   Úimg)Ú	recursiverB   FrC   ÚsrcÚicon_z//zhttps:r'   r&   r   Úaltz![z](ú)z

c              3   óB   K  — | ]  }|j                  «       sŒ|–— Œ y ­w)Nr#   )Ú.0rB   s     r   ú	<genexpr>zparse_detail.<locals>.<genexpr>}   s   è ø€ Ò8 ¨a¯g©g­iœ!Ñ8ùs   ‚˜õ   Â z&nbsp;)r   Ú
select_oner*   r,   ÚfinditerÚgroupr+   r)   ÚnameÚdescendantsÚgetÚlowerr.   r/   ÚrsplitÚappendÚjoinr   )r2   r   r4   r(   r;   Ú	date_textÚmr?   r@   Úcontent_divÚselÚelÚpartsÚcontent_tablesÚin_content_tableÚctrE   rG   Útexts                      r   Úparse_detailra   8   s¾  € Ü˜˜}Ó-€Dà€EØ	�‰˜Ó	€BÙ	Ø—‘ $�Ó'ˆà€IÜ�[‰[Ð/°Ó6ò ˆØ—G‘G˜A“Jˆ	Ùðð €GØ€KØ—/‘/ .Ó1€KÙØPò 	ˆCØ—‘ Ó%ˆBÚ”c˜"Ÿ+™+ c°˜+Ó6Ó7¸"Ó<Ø �Ùð		ñ
 Ø¨	¸bÐQSÑTÐTà€Eð !×)Ñ)¨'Ó2€Nà×"Ñ"Ò#8ÀDÐ"ÓIó %ˆà�7‰7�cŠ>Ø$ÐØ$ò �Ø˜Ÿ™¨u˜Ó5Ñ5¸¸r¿~¹~Ò9MØ'+Ð$Ùðñ  Øð �7‰7�gÒØ$ÐØ$ò �Ø˜“8  b§n¡nÒ 4Ø'+Ð$Ùðñ  Øà�7‰7�eÒØ—&‘&˜ Ó#ˆCØ˜#Ÿ)™)›+Ñ%ØØ�~‰~˜dÔ#Ø ‘n‘Ø—‘ Ô$Ü ‘n‘Ø—^‘^ FÔ+Ø—j‘j  aÓ(¨Ñ+¨cÑ1°CÑ7�Ø—&‘&˜ Ó#Ò) rˆCØ�L‰L˜2˜c˜U " S E¨Ð+Ô,Ùà�{‰{˜3 dˆ{Ó+ˆÛØ�L‰L˜ÖðK%ðN �k‰kÑ8 UÔ8Ó8€GØ�o‰o˜h¨Ó,×4Ñ4°X¸sÓC€GØ I¸'ÐRTÑUÐUr   c                  ó¸  — t        j                  t        d¬«      } | j                  d«       | j	                  «       }| j                  «        t        dd¬«       g }t        t        › d�«      }|s0t        dt        j                  ¬	«       t        j                  d
«       t        |«      }t        dt        |«      › d�d¬«       |j                  |«       	 t        t        › d�«      }t        |«      }|rV|D �ch c]  }|d   ’Œ	 }}|D �cg c]  }|d   |vsŒ|‘Œ }	}|	r+t        dt        |	«      › d�d¬«       |j                  |	«       t        dt        |«      › �d¬«       dx}
x}}t        |«      D �]Õ  \  }}|j                  d|d   f«       |j!                  «       r|d
z  }Œ3|dz  dk(  r6t        d|› dt        |«      › d|d   d d › d�t        j                  dd¬«       t        |d   «      }|st        dt        j                  ¬	«       Œ�t#        ||d   «      }|d   xs |d   }|d   }|d   }|j%                  «       s)|d
z  }|dz  dk(  rt        d t        j                  ¬	«       Œût'        j(                  d!d|«      j%                  «       }|r|d d" n|d d" }d}|rVt'        j*                  d#|«      }|r>t-        |j/                  d
«      |j/                  d$«      z   |j/                  d%«      z   «      }	 |j                  d&|t0        t2        |d   |||d'|f	«       |j4                  dkD  r|
d
z  }
t9        j:                  d)«       �ŒØ | j                  «        | j=                  «        t        d*t0        › d+|
› d,|› d-|› d.�	d¬«       y c c}w c c}w #  Y �ŒQxY w# t6        $ r0}|dz  dk(  rt        d(|› �t        j                  ¬	«       Y d }~Œ�d }~ww xY w)/Né<   )r	   zPRAGMA busy_timeout=60000u!   [æ¸…ç�†] å·²æ¸…ç�†è¯¥ç«™æ—§æ•°æ�®T)Úflushz/col.jsp?id=105z[ERROR] Cannot fetch list page)Úfiler   z[INFO] List page: z itemsz/col.jsp?id=105&pageNo=2r   z[INFO] Page 2: z
 new itemsz[INFO] Total items: r   z'SELECT id FROM gov_raw WHERE page_url=?r%   z[INFO] [r'   z] r(   é(   z...r<   )re   Úendrd   zFETCH FAILEDr>   r?   ÚEMPTYz\s+éÈ   z(\d{4})-(\d{2})-(\d{2})r   é   z™INSERT OR IGNORE INTO gov_raw (title, site_name, group_name, page_url, publish_date, content, summary, attachments, date_rank) VALUES (?,?,?,?,?,?,?,?,?)z[]z
DB ERROR: g333333Ó?z

[RESULT] z: z new, z skip, z empty)Úsqlite3ÚconnectÚDBÚexecuteÚcursorÚcommitÚprintr   r/   ÚsysÚstderrÚexitr8   r+   ÚextendÚ	enumerateÚfetchonera   r$   r,   ÚsubÚsearchÚintrO   Ú	SITE_NAMEÚ
GROUP_NAMEÚrowcountÚ	ExceptionÚtimeÚsleepÚclose)ÚconnÚcÚ	all_itemsr2   r3   Úhtml2Úitems2ÚiÚexisting_urlsÚnewÚ	new_countÚ
skip_countÚempty_countÚidxÚitemÚdetailr(   rW   r?   ÚplainÚsummaryÚ	date_rankÚm2Úes                           r   Úmainr•   ‚   s®  € Ü�?‰?œ2 rÔ*€DØ‡L�LÐ,Ô-Ø�‰‹€Að 	‡K�K„MÜ	Ð
-°TÕ:à€IÜ”H�:˜_Ð-Ó.€DÙÜÐ.´S·Z±ZÕ@Ü�‰�ŒÜ˜$Ó€EÜ	Ðœs 5›z˜l¨&Ð
1¸Õ>Ø×Ñ�UÔð
Üœ˜
Ð":Ð;Ó<ˆÜ˜uÓ%ˆÙØ/8Ö9¨!˜Q˜u›XÐ9ˆMÐ9Ø$ÖF˜¨¨%©¸Ò(E’1ÐFˆCÐFÙÜ˜¬¨C« z°Ð<ÀDÕIØ× Ñ  Ô%ô 
Ð ¤ Y£Ð 0Ð
1¸Õ>Ø+,Ð,€IÐ,�
˜[ä˜yÓ)ó %‰	ˆˆTØ	�	‰	Ð;¸dÀ5¹k¸^ÔLØ�:‰:Œ<Ø˜!‰OˆJØØ�‰7�aŠ<Ü�H˜S˜E ¤3 y£>Ð"2°"°T¸'±]À3ÀBÐ5GÐ4HÈÐLÔSV×S]ÑS]ÐcfÐnrÕsÜ�T˜%‘[Ó!ˆÙÜ�.¤s§z¡zÕ2ØÜ˜d D¨¡KÓ0ˆØ�w‘Ò0 4¨¡=ˆØ˜6‘Nˆ	Ø˜Ñ#ˆØ�}‰}ŒØ˜1ÑˆKØ�Q‰w˜!Š|Ü�g¤C§J¡JÕ/ØÜ—‘�v˜s GÓ,×2Ñ2Ó4ˆÙ!&�%˜˜‘+¨E°$°3¨KˆØˆ	ÙÜ—‘Ð5°yÓAˆBÙÜ §¡¨£¨b¯h©h°q«kÑ 9¸B¿H¹HÀQ»KÑ GÓH�	ð		9Ø�I‰Ið lØœ	¤:¨t°E©{¸IÀwÐPWÐY]Ð_hÐiôð �z‰z˜AŠ~Ø˜Q‘�	ô 	�
‰
�3ŽðK%ðN 	‡K�K„MØ‡J�J„LÜ	ˆKœ	�{ " Y K¨v°j°\ÀÈÈÐU[Ð
\ÐdhÖiùòi :ùÚFøðÚûôN ò 	9Ø�Q‰w˜!Š|Ü˜
 1 #Ð&¬S¯Z©ZÕ8ÿøð	9úsH   Ã#N Ã:NÄN ÄNÄNÄ/N Ë=:N Î
N ÎNÎ 	OÎ)&OÏOÚ__main__)(Ú__doc__r,   rr   ÚosÚjsonr   Ússlr   Úurllib.requestr   Úurllib.errorÚbs4r   rk   Ú_create_unverified_contextÚ_create_default_https_contextÚcreate_default_contextr   Úcheck_hostnameÚ	CERT_NONEÚverify_moder/   r{   r|   ÚenvironrR   rm   r   Ú_MAX_PGrv   Úargvr‡   r!   r+   rz   r   r8   ra   r•   Ú__name__© r   r   ú<module>r©      sÿ   ðá 8ß )× )× )Ó )ß #Ý Û à$'×$BÑ$B€Ô !Ø €c× Ñ Ó"€Ø€Ô Ø—-‘-€„à#€Ø-€	Ø€
Ø‡Z�Z‡^�^�KÐ!2Ó3€ØÐWÐ
X€à
€Ù�c—h‘hÓò �D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ù�c—h‘h˜q 1™u‘oÓ&ˆÙðò1òò*GVòTJjðZ ˆzÒÙ…Fð r   