Ë
    €Ûµ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	m
Z
 ddlZdZdZdZej                  j!                  dd«      Zd	d
iZdZd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e dk(  r e«        yy)u  
å®‰å¾½æ€�ç§‘çŽ¯å¢ƒç³»ç»Ÿå·¥ç¨‹æŠ€æœ¯æœ‰é™�å…¬å�¸ - é¡¹ç›®å…¬ç¤º (ciscoep.com)
Yun300 CMS / äº‘å�ƒç«™ç¾¤
åˆ—è¡¨API: /comp/portalResNews/list.do?compId=portalResNews_list-15890012838618906&cid=1&size=6&currentPage=N
è¯¦æƒ…: /news/N.html
æ­£æ–‡: article.summary > div.lead > p
é    N)ÚBeautifulSoupzhttp://www.ciscoep.comu   å®‰å¾½æ€�ç§‘çŽ¯å¢ƒ-é¡¹ç›®å…¬ç¤ºu   ä¼�ä¸šçŽ¯è¯„Ú	SEARCH_DBz/root/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36za/comp/portalResNews/list.do?compId=portalResNews_list-15890012838618906&cid=1&size=6&currentPage=é   z--pagesé   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 - ©ÚfileÚ )ÚurllibÚrequestÚRequestÚHEADERSÚurlopenÚreadÚdecodeÚ	ExceptionÚprintÚsysÚstderr)ÚurlÚapiÚreqÚes       ú"/root/gov_crawler/crawl_ciscoep.pyÚfetchr!      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        | d«      }|j                  d«      D �]­  }|j                  dd«      }|sŒ|j                  d«      s&|j                  d«      r	t        |z   nt        dz   |z   }|j                  d«      }|r|j                  d¬	«      nd}|rt        |«      d
k  rŒˆd}|j                  d«      }|rU|j                  d«      }	|j                  d«      }
|
r1|	r/|	j                  d¬	«      }|
j                  d¬	«      }|r|› d|› �n|}|s¥|j                  d«      }|r’|j                  d«      }|r|j                  d¬	«      }t        j                  d|«      }|rU|j                  d«      › d|j                  d«      j                  d«      › d|j                  d«      j                  d«      › �}|j                  |||dœ«       �Œ° |S )z$Extract items from API response HTMLúhtml.parserza.newLinkBoxÚhrefr   Úhttpú/Úh2T©Ústripé   z.leftTimeBoxz.newDataz.newYearMonú-z.newToolBoxz.data1z-(\d{4})\s*[-_]\s*(\d{1,2})\s*[-_]\s*(\d{1,2})r   é   é   )Útitler   Údate)r   ÚselectÚgetÚ
startswithÚBASE_URLÚ
select_oneÚget_textÚlenÚreÚsearchÚgroupÚzfillÚappend)ÚhtmlÚitemsÚsoupÚar$   r'   r.   r/   ÚlbÚdÚymÚdayÚymtÚtbÚspÚtxtÚms                    r    Úextract_items_from_apirI   (   s¼  € à€EÜ˜˜}Ó-€DØ�[‰[˜Ó(ó "BˆØ�u‰u�V˜RÓ ˆÙØØ�‰˜vÔ&Ø&*§o¡o°cÔ&:”8˜d’?ÄÈ3ÁÐQUÑ@UˆDà�\‰\˜$ÓˆÙ+-�—‘ $�Ô'°2ˆÙœ˜E›
 QšØð ˆØ�\‰\˜.Ó)ˆÙØ—‘˜jÓ)ˆAØ—‘˜}Ó-ˆBÙ‘aØ—j‘j t�jÓ,�Ø—k‘k¨�kÓ-�Ù),˜#˜˜a ˜u‘~°#�ñ Ø—‘˜mÓ,ˆBÙØ—]‘] 8Ó,�ÙØŸ+™+¨D˜+Ó1�CÜŸ	™	Ð"RÐTWÓX�AÙØ"#§'¡'¨!£* ¨Q¨q¯w©w°q«z×/?Ñ/?ÀÓ/BÐ.CÀ1ÀQÇWÁWÈQÃZ×EUÑEUÐVWÓEXÐDYÐZ˜à�‰˜u¨T¸4Ñ@ÖAðE"BðF €Ló    c           	      óÎ	  — t        | d«      }d}|j                  d«      }|r|j                  d¬«      }d}|j                  d«      }|r;|j                  d¬«      }t        j                  d|«      }|r|j                  d«      }d}	g }
|j                  d	«      }|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±g }|j                  d«      D �])  }|j                  ddg«      D �cg c]  }|j                  dd¬«      ‘Œ }}|sŒ8|j                  ddg«      D ]¶  }|j                  dd¬ «      D ]ž  }|d!   }t        j                  d"|t        j                  «      sŒ.|j                  d¬«      xs d#}|j                  d«      r
t        |z   }n,|j                  d«      s|j                  dd«      d   dz   |z   }|
j                  ||d$œ«       Œ  Œ¸ |j                  d%d&j!                  |«      z   d'z   «       �Œ, |rmt#        |d   j%                  d(«      «      d)z
  }d%d&j!                  d*g|z  «      z   d'z   }|j'                  d|«       |j                  d+j!                  |«      «       �ŒÉ|j                  dd¬«      }|s�Œà|j                  dd¬ «      D ]ž  }|d!   }t        j                  d"|t        j                  «      sŒ.|j                  d¬«      xs d#}|j                  d«      r
t        |z   }n,|j                  d«      s|j                  dd«      d   dz   |z   }|
j                  ||d$œ«       Œ  |j                  |«       �Œ§ d,j!                  d-„ |D «       «      }	|	j)                  d.d«      j)                  d/d«      }	t+        «       }g }|
D ]/  }|d0   |vsŒ|j-                  |d0   «       |j                  |«       Œ1 |||	|d
œS c c}w )1zParse detail pager#   r   zh1.title-boxTr(   z.p_timez(\d{4}-\d{2}-\d{2})r   z.lead)r.   r/   ÚcontentÚattachments)ÚpÚtableÚimg)Ú	recursiverN   rO   rP   ÚsrcÚicon_z//zhttp:r&   r%   r   Úaltz![z](ú)ÚtrÚtdÚthú r?   )r$   r$   z\.(docx?|pdf|xlsx?|rar|zip)$u   é™„ä»¶)r.   r   z| z | z |ú|r,   z---ú
z

c              3   óB   K  — | ]  }|j                  «       sŒ|–— Œ y ­w)Nr(   )Ú.0rN   s     r    ú	<genexpr>zparse_detail.<locals>.<genexpr>¥   s   è ø€ Ò8 ¨a¯g©g­iœ!Ñ8ùs   ‚˜õ   Â z&nbsp;r   )r   r4   r5   r7   r8   r9   Úfind_allÚnameÚfind_parentr1   Úlowerr2   r3   Úrsplitr;   ÚIÚjoinr6   ÚsplitÚinsertr   ÚsetÚadd)r<   r   r>   r.   Úh1Ú	date_textÚtime_elrG   rH   rL   rM   ÚleadÚpartsÚelrR   rT   ÚrowsrV   ÚcÚcellsÚcellr?   ÚahÚatitleÚ	col_countÚsepÚtextÚseenÚ
unique_attÚatts                                 r    Úparse_detailr}   R   s³  € ä˜˜}Ó-€Dà€EØ	�‰˜Ó	(€BÙ	Ø—‘ $�Ó'ˆà€IØ�o‰o˜iÓ(€GÙØ×Ñ TÐÓ*ˆÜ�I‰IÐ,¨cÓ2ˆÙØŸ™ ›
ˆIà€GØ€Kà�?‰?˜7Ó#€DÙØ¨	¸bÐQSÑTÐTà€EØ�m‰mÒ1¸TˆmÓBó 8ˆØ�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ÓØˆDØ—k‘k $Ó'ó A�Ø>@¿k¹kÈ4ÐQUÈ,Ó>WÖX¸˜Ÿ™ C¨t˜Õ4ÐX�ÐXÚà "§¡¨T°4¨LÓ 9ò 	Q˜Ø!%§¡¨s¸ Ó!>ò Q˜AØ!" 6¡˜BÜ!Ÿy™yÐ)HÈ"ÌbÏdÉdÕSØ)*¯©¸$¨Ó)?Ò)KÀ8 Ø#%§=¡=°Ô#5Ü)1°B©¡BØ)+¯©°vÔ)>Ø),¯©°C¸Ó);¸AÑ)>ÀÑ)DÀrÑ)I BØ +× 2Ñ 2¸VÈBÑ3OÕ PñQð	Qð —K‘K  u§z¡z°%Ó'8Ñ 8¸4Ñ ?Ö@ðAñ Ü  Q¡§¡¨cÓ 2Ó3°aÑ7�	Ø˜UŸZ™Z¨¨°)Ñ(;Ó<Ñ<¸tÑC�Ø—‘˜A˜sÔ#Ø—‘˜TŸY™Y t›_Ô-Ùð �{‰{˜3 dˆ{Ó+ˆÛØ—[‘[ ¨4�[Ó0ò E�Ø�v‘Y�Ü—9‘9Ð<¸bÄ"Ç$Á$ÕGØŸZ™Z¨d˜ZÓ3Ò?°x�FØ—}‘} SÔ)Ü%¨™]™ØŸ]™]¨6Ô2Ø ŸZ™Z¨¨QÓ/°Ñ2°SÑ8¸2Ñ=˜Ø×&Ñ&°ÀÑ'CÕDðEð �L‰L˜Öðq8ðt �k‰kÑ8 UÔ8Ó8€GØ�o‰o˜h¨Ó,×4Ñ4°X¸sÓC€Gä‹5€DØ€JØò #ˆØˆu‰:˜TÒ!Ø�H‰H�S˜‘ZÔ Ø×Ñ˜cÕ"ð#ð
  I¸'ÐR\Ñ]Ð]ùò[ Ys   Ç=S"c                  óz  — t        j                  t        d¬«      } | j                  d«       | j	                  «       }| j                  «        t        dd¬«       g }d}t        rt        |t        «      }t        d|dz   «      D ]~  }t        › t        › |› �}t        |d¬	«      }|s t        d
|› d�t        j                  ¬«       ŒBt        |«      }t        d|› dt!        |«      › d�d¬«       |s n|j#                  |«       Œ€ 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                  ¬«       �Œt-        j.                  d"d|«      j+                  «       }|r|d d# n|d d# }|rt1        j2                  |d$¬%«      nd&}d}|rVt-        j4                  d'|«      }|r>t7        |j9                  d«      |j9                  d(«      z   |j9                  d)«      z   «      }	 |j                  d*|t:        t<        |d   |||||f	«       |j>                  dkD  r|dz  }|t!        |«      z  }tC        jD                  d,«       �Œ | j                  «        | jG                  «        t        d-t:        › d|› d.|	› d/|
› d0|› d1�d¬«       y # t@        $ r0}|dz  dk(  rt        d+|› �t        j                  ¬«       Y d }~ŒŽd }~ww xY w)2Né<   r
   zPRAGMA busy_timeout=60000u!   [æ¸…ç�†] å·²æ¸…ç�†è¯¥ç«™æ—§æ•°æ�®T)Úflushé   r   )r   z[WARN] Page z: empty responser   z[INFO] Page z: z itemsz[INFO] Total items from list: r   z'SELECT id FROM gov_raw WHERE page_url=?r   r*   z[INFO] [r&   z] r.   é(   z...rY   )r   Úendr€   zFETCH FAILEDr/   rL   rM   ÚEMPTYz\s+éÈ   F)Úensure_asciiz[]z(\d{4})-(\d{2})-(\d{2})r,   r-   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Úranger3   ÚLIST_APIr!   r   r   rI   r6   ÚextendÚ	enumerateÚfetchoner}   r)   r7   ÚsubÚjsonÚdumpsr8   Úintr9   Ú	SITE_NAMEÚ
GROUP_NAMEÚrowcountr   ÚtimeÚsleepÚclose)Úconnrr   Ú	all_itemsÚtotal_pagesÚpgÚapi_urlr<   r=   Ú	new_countÚ
skip_countÚempty_countÚ	total_attÚidxÚitemÚdetailr.   rl   rL   Úattachments_listÚplainÚsummaryÚatt_jsonÚ	date_rankÚm2r   s                            r    Úmainr°   ²   s±  € Ü�?‰?œ2 rÔ*€DØ‡L�LÐ,Ô-Ø�‰‹€Að
 	‡K�K„MÜ	Ð
-°TÕ:à€IØ€KåÜ˜+¤wÓ/ˆä�A�{ Q‘Ó'ò 
 ˆÜ�Jœx˜j¨¨Ð-ˆÜ�W $Ô'ˆÙÜ�L  Ð$4Ð5¼C¿J¹JÕGØÜ& tÓ,ˆÜ�˜R˜D ¤3 u£: ,¨fÐ5¸TÕBÙÙØ×Ñ˜Õð
 ô 
Ð*¬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Î	N:Î
&N5Î5N:Ú__main__)F)!Ú__doc__r7   r   Úosr•   r›   Úurllib.requestr   Úurllib.errorÚbs4r   r‡   r3   r˜   r™   Úenvironr1   r‰   r   r�   Ú	PAGE_SIZEr�   r’   ÚargvÚir?   r6   r—   r!   rI   r}   r°   Ú__name__© rJ   r    ú<module>r½      sß   ðñ÷ × Ó ß #Ý Û à#€Ø-€	Ø€
Ø‡Z�Z‡^�^�KÐ!2Ó3€àÐPð€ð o€Ø€	à
€Ù�c—h‘hÓò �D€A€qØˆIƒ~˜!˜a™%¡# c§h¡h£-Ó/Ù�c—h‘h˜q 1™u‘oÓ&ˆÙðóò'òT]^ò@[Cð| ˆzÒÙ…Fð rJ   