Ë
    €Ûµj¦"  ã                   óˆ  — 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
dZdZdZe j                  j                  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d„Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)é    N)ÚBeautifulSoupzhttp://www.gzhgyjy.comu%   è´µå·žçœ�åŒ–å·¥ç ”ç©¶é™¢-ä¿¡æ�¯å…¬ç¤ºu   ä¼�ä¸šçŽ¯è¯„Ú	SEARCH_DBz/root/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z--pagesé   c                 óÊ  — ddl }t        t        | «      d«      }|j                  d«      D ]L  }|j	                  dd«      }|sŒ|j                  d«      rŒ*|r|j                  j                  ||«      n||d<   ŒN |j                  d«      D ]L  }|j	                  d	d«      }|sŒ|j                  d
«      rŒ*|r|j                  j                  ||«      n||d	<   ŒN t        |«      S )uA   ä¿�ç•™ HTML è¡¨æ ¼ç»“æž„ï¼Œä»…å°†ç›¸å¯¹é“¾æŽ¥/å›¾ç‰‡è½¬ç»�å¯¹ URLr   Núhtml.parserÚaÚhrefÚ )ÚhttpÚ
javascriptú#ÚimgÚsrc)r   ú//zdata:)Úurllib.parser   ÚstrÚfind_allÚgetÚ
startswithÚparseÚurljoin)ÚtableÚbase_urlÚurllibÚtblr   r	   r   r   s           ú"/root/gov_crawler/crawl_gzhgyjy.pyÚhtml_table_to_htmlr      sÐ   € ãÜ
œ˜E›
 MÓ
2€CØ�\‰\˜#Óò SˆØ�u‰u�V˜RÓ ˆÚ˜Ÿ™Ð(CÕDÙ@H˜Ÿ™×,Ñ,¨X°tÔ<ÈdˆAˆfŠIðSð �|‰|˜EÓ"ò RˆØ�g‰g�e˜RÓ ˆÚ�s—~‘~Ð&=Õ>Ù@H˜Ÿ™×-Ñ-¨h¸Ô<ÈcˆC�ŠJðRô ˆs‹8€Oó    c                 ó<  — t         j                  j                  | t        ¬«      }	 t         j                  j	                  |d¬«      j                  «       j                  dd¬«      S # t        $ r+}t        d| › d|› �t        j                  ¬	«       Y d }~y
d }~ww xY w)N)Úheadersé   ©Útimeoutzutf-8Úreplace)Úerrorsz[WARN] fetch failed: z - ©Úfiler
   )r   ÚrequestÚRequestÚHEADERSÚurlopenÚreadÚdecodeÚ	ExceptionÚprintÚsysÚstderr)ÚurlÚreqÚes      r   Úfetchr5   #   sƒ   € Ü
�.‰.×
 Ñ
  ¬gÐ
 Ó
6€CðÜ�~‰~×%Ñ% c°2Ð%Ó6×;Ñ;Ó=×DÑDÀWÐU^ÐDÓ_Ð_øÜò ÜÐ% c U¨#¨a¨SÐ1¼¿
¹
ÕCÜûðús   §?A' Á'	BÁ0!BÂBc                 óô  — g }t        j                  d| «      D ]Ü  }|j                  d«      }|j                  d«      j                  «       }|rt	        |«      dk  rŒD|j                  d«      s&|j                  d«      st        dz   |z   nt        |z   }d}t        j                  d| |j                  «       |j                  «       d	z    «      }|r|j                  d«      }|j                  |||d
œ«       ŒÞ |S )zExtract items from list pagez5<a[^>]*href="(NewsShow\.asp\?[^"]+)"[^>]*>([^<]+)</a>r   é   é   r   ú/r
   ú(\d{4}-\d{2}-\d{2})i,  )Útitler2   Údate)
ÚreÚfinditerÚgroupÚstripÚlenr   ÚBASE_URLÚsearchÚendÚappend)ÚhtmlÚitemsÚmr	   r;   r<   Údate_ms          r   Úextract_itemsrJ   ,   sá   € à€EÜ�[‰[Ø@Øóò Bˆð �w‰w�q‹zˆØ—‘˜“
× Ñ Ó"ˆÙœ˜E›
 QšØØ�‰˜vÔ&Ø04·±ÀÔ0D”8˜c‘> DÒ(Ì(ÐUYÉ/ˆDð ˆÜ—‘Ð1°4¸¿¹»ÀÇÁÃÈÁÐ3LÓMˆÙØ—<‘< “?ˆDà�‰˜u¨T¸4Ñ@ÕAð#Bð$ €Lr   c                 ó*  — t        | d«      }d}|j                  d«      }|r|j                  d¬«      }|s.dD ])  }|j                  |«      }|sŒ|j                  d¬«      } n 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                  g d¢d¬«      D �]æ  }|j                  dk(  r|j                  d«      rŒ%|j                  dk(  r|j                  d«      rŒF|j                  dk(  r³|j                  dd«      }d|j                  «       v rŒz|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k(  r!t!        ||«      }|r|j                  |«       �Œ8|j                  dd¬«      }|s�ŒO|j                  dd¬«      D ]q  }|d    }t        j"                  d!|t        j$                  «      sŒ.|j                  d¬«      xs d"}|j                  d«      r	t        |z   }|
j                  ||d#œ«       Œs |j                  |«       �Œé d$j'                  d%„ |D «       «      }	|	j)                  d&d«      j)                  d'd«      }	t+        «       }g }|
D ]Q  }t-        |t.        «      s|j                  |«       Œ%|d(   |vsŒ-|j1                  |d(   «       |j                  |«       ŒS |||	|dœS ))zParse detail pager   r
   Úh1T©r@   )z.page-titlez.titlez.article-titlez.ArticleTitler:   r   z.section-sub)z[class*=content]z[class*=article]z.textz#contentz.main-contentú éd   )r;   r<   ÚcontentÚattachments)Úpr   r   )Ú	recursiverR   r   r   r   Úicon_r   zhttp:r9   r   r   Úaltz![z](ú)r   )r	   r	   z\.(docx?|pdf|xlsx?|rar|zip)$u   é™„ä»¶)r;   r2   z

c              3   óB   K  — | ]  }|j                  «       sŒ|–— Œ y ­w)NrM   )Ú.0rR   s     r   ú	<genexpr>zparse_detail.<locals>.<genexpr>�   s   è ø€ Ò8 ¨a¯g©g­iœ!Ñ8ùs   ‚˜õ   Â z&nbsp;r2   )r   Ú
select_oneÚget_textr=   r>   r?   rA   r   ÚnameÚfind_parentr   Úlowerr   rB   ÚrsplitrE   r   rC   ÚIÚjoinr$   ÚsetÚ
isinstanceÚdictÚadd)rF   r2   Úsoupr;   rL   ÚselÚelÚ	date_textrH   rP   rQ   Úcontent_divÚpartsr   rU   Útbl_htmlÚtextr   ÚahÚatitleÚseenÚ
unique_attÚatts                          r   Úparse_detailrt   D   s‹  € ä˜˜}Ó-€Dð €EØ	�‰˜Ó	€BÙ	Ø—‘ $�Ó'ˆÙàOò 	ˆCØ—‘ Ó%ˆBÚØŸ™¨$˜Ó/�Ùð		ð €IÜ�[‰[Ð/°Ó6ò ˆØ—G‘G˜A“Jˆ	Ùðð
 €GØ€Kà—/‘/ .Ó1€KÙØaò 	ˆCØ—‘ Ó%ˆBÚ”c˜"Ÿ+™+ c°˜+Ó6Ó7¸#Ó=Ø �Ùð		ñ Ø¨	¸bÐQSÑTÐTà€EØ×"Ñ"Ò#8ÀDÐ"ÓIó "ˆØ�7‰7�cŠ>˜bŸn™n¨WÔ5ØØ�7‰7�gÒ "§.¡.°Ô"9Øà�7‰7�eÒØ—&‘&˜ Ó#ˆCØ˜#Ÿ)™)›+Ñ%ØØ�~‰~˜dÔ#Ø ‘m‘Ø—‘ Ô$Ü ‘n‘Ø—^‘^ FÔ+Ø—j‘j  aÓ(¨Ñ+¨cÑ1°CÑ7�Ø—&‘&˜ Ó#Ò) rˆCØ�L‰L˜2˜c˜U " S E¨Ð+Ô,Ùà�7‰7�gÒÜ)¨"¨cÓ2ˆHÙØ—‘˜XÔ&ÙØ�{‰{˜3 dˆ{Ó+ˆÛØ—[‘[ ¨4�[Ó0ò E�Ø�v‘Y�Ü—9‘9Ð<¸bÄ"Ç$Á$ÕGØŸZ™Z¨d˜ZÓ3Ò?°x�FØ—}‘} SÔ)Ü%¨™]˜Ø×&Ñ&°ÀÑ'CÕDðEð �L‰L˜ÖðE"ðH �k‰kÑ8 UÔ8Ó8€GØ�o‰o˜h¨Ó,×4Ñ4°X¸sÓC€Gä‹5€DØ€JØò #ˆÜ˜#œtÔ$Ø×Ñ˜cÔ"ØØˆu‰:˜TÒ!Ø�H‰H�S˜‘ZÔ Ø×Ñ˜cÕ"ð#ð  I¸'ÐR\Ñ]Ð]r   c                  óÊ  — t        j                  t        d¬«      } | j                  d«       | j	                  «       }| j                  «        t        dd¬«       g }d}t        rt        |t        «      }t        d|dz   «      D ]d  }t        › d	�}|dkD  r|d
|› �z  }t        |«      }|s n?t        |«      }|s n0t        d|› dt        |«      › d�d¬«       |j                  |«       Œf t        «       }g }	|D ]/  }
|
d   |vsŒ|j!                  |
d   «       |	j#                  |
«       Œ1 |	}t        dt        |«      › �d¬«       d}d}d}d}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   xs |d   }|d   }|d   }|j/                  «       s*|dz  }|dz  dk(  rt        d t(        j*                  ¬«       �Œt1        j2                  d!d|«      j/                  «       }|r|d d" n|d d" }|rt5        j6                  |d#¬$«      nd%}d}|rVt1        j8                  d&|«      }|r>t;        |j=                  d«      |j=                  d'«      z   |j=                  d(«      z   «      }	 |j                  d)|t>        t@        |d   |||||f	«       |jB                  dkD  r|dz  }|t        |«      z  }tG        jH                  d+«       �Œ | j                  «        | jK                  «        t        d,t>        › d|› d-|› d.|› d/|› d0�d¬«       y # tD        $ r0}|dz  dk(  rt        d*|› �t(        j*                  ¬«       Y d }~ŒŽd }~ww xY w)1Né<   r"   zPRAGMA busy_timeout=60000u!   [æ¸…ç�†] å·²æ¸…ç�†è¯¥ç«™æ—§æ•°æ�®T)Úflushé   r   z/News.asp?clsid=0&id=3z&page=z[INFO] Page z: z itemsr2   z[INFO] Total items from list: r   z'SELECT id FROM gov_raw WHERE page_url=?r8   z[INFO] [r9   z] r;   é(   z...rN   )r'   rD   rw   zFETCH FAILEDr&   r<   rP   rQ   ÚEMPTYz\s+éÈ   F)Úensure_asciiz[]z(\d{4})-(\d{2})-(\d{2})r7   é   zºINSERT OR IGNORE INTO gov_raw 
                (title, site_name, group_name, page_url, publish_date, content, summary, attachments, date_rank)
                VALUES (?,?,?,?,?,?,?,?,?)z
DB ERROR: g333333Ó?z

[RESULT] z new, z skip, z empty, z attachments)&Úsqlite3ÚconnectÚDBÚexecuteÚcursorÚcommitr/   Ú_MAX_PGÚminÚrangerB   r5   rJ   rA   Úextendrc   rf   rE   Ú	enumerateÚfetchoner0   r1   rt   r@   r=   ÚsubÚjsonÚdumpsrC   Úintr?   Ú	SITE_NAMEÚ
GROUP_NAMEÚrowcountr.   ÚtimeÚsleepÚclose)ÚconnÚcÚ	all_itemsÚtotal_pagesÚpgr2   rF   rG   Úseen_setÚdedupedÚitÚ	new_countÚ
skip_countÚempty_countÚ	total_attÚidxÚitemÚdetailr;   rj   rP   Úattachments_listÚplainÚsummaryÚatt_jsonÚ	date_rankÚm2r4   s                               r   Úmainr©   Ÿ   sò  € Ü�?‰?œ2 rÔ*€DØ‡L�LÐ,Ô-Ø�‰‹€Að 	‡K�K„MÜ	Ð
-°TÕ:à€IØ€KÝÜ˜+¤wÓ/ˆä�A�{ Q‘Ó'ò  ˆÜ�
Ð0Ð1ˆØ�Š6Ø�V˜B˜4�=Ñ ˆCÜ�S‹zˆÙÙÜ˜dÓ#ˆÙÙÜ�˜R˜D ¤3 u£: ,¨fÐ5¸TÕBØ×Ñ˜Õð ô ‹u€HØ€GØò ˆØˆe‰9˜HÒ$Ø�L‰L˜˜E™Ô#Ø�N‰N˜2Õðð €Iä	Ð*¬3¨y«>Ð*:Ð
;À4ÕHà€IØ€JØ€KØ€Iä˜yÓ)ó 2‰	ˆˆ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Ò2 d¨6¡lˆ	Ø˜Ñ#ˆØ! -Ñ0Ðà�}‰}ŒØ˜1ÑˆKØ�Q‰w˜!Š|Ü�g¤C§J¡JÕ/Ùä—‘�v˜s GÓ,×2Ñ2Ó4ˆÙ!&�%˜˜‘+¨E°$°3¨KˆÙGW”4—:‘:Ð.¸UÕCÐ]aˆàˆ	ÙÜ—‘Ð5°yÓAˆBÙÜ §¡¨£¨b¯h©h°q«kÑ 9¸B¿H¹HÀQ»KÑ GÓH�	ð	9Ø�I‰Ið.ð œ	¤:¨t°E©{¸IÀwÐPWÐYaÐclÐmô	ð �z‰z˜AŠ~Ø˜Q‘�	ØœSÐ!1Ó2Ñ2�	ô
 	�
‰
�3Žðe2ðh 	‡K�K„MØ‡J�J„Lä	ˆKœ	�{ " Y K¨v°j°\ÀÈÈÐU]Ð^gÐ]hÐhtÐ
uð  ~Bö  Cøô ò 	9Ø�Q‰w˜!Š|Ü˜
 1 #Ð&¬S¯Z©ZÕ8ÿøð	9ús   ÌAN)Î)	O"Î2&OÏO"Ú__main__)r
   )Úosr=   r0   r‹   r‘   Úurllib.requestr   Úurllib.errorÚbs4r   r~   rB   rŽ   r�   Úenvironr   r€   r*   r„   rˆ   ÚargvÚir   rA   r�   r   r5   rJ   rt   r©   Ú__name__© r   r   ú<module>r´      sÓ   ðã 	Ø ?ß × Ó ß #Ý Û à#€Ø3€	Ø€
Ø‡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Ó&ˆÙðóòòò0X^òvcCðL ˆzÒÙ…Fð r   