Ë
    ¸¬uj3  ã                   óü   — 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mZ ddl	m
Z
 dZej                  j                  j                  «        dZddiZd	Zd
Z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)u,   çŠ�ä¸ºåŽ¿-å…¬ç¤ºå…¬å‘Š çˆ¬è™« (è‡ªå®šä¹‰CMS)é    N)ÚBeautifulSoup)ÚurljoinFz"http://www.qianwei.gov.cn/qwx/gsggz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36z/root/search.dbu   çŠ�ä¸ºåŽ¿_å…¬ç¤ºå…¬å‘Šé"   c                 ó0   — | r| j                  dd¬«      S dS )Nú T©Ú	separatorÚstripÚ )Úget_text)Úsoups    ú"/root/gov_crawler/crawl_qianwei.pyr   r      s   € Ù7;ˆ4�=‰= 3¨dˆ=Ó3ÐCÀÐCó    c                 óV  ‡— t        | d«      }|j                  dd¬«      }|sdg fS g }|j                  dd¬«      D ]L  }|d	   }t        j                  d
|t        j
                  «      sŒ.|j                  t        t        |«      «       ŒN g }|j                  d«      D ].  }|j                  d¬«      }|sŒ|dk7  sŒ|j                  |«       Œ0 |j                  d«      D ]  }	|	j                  d«       Œ |j                  dd¬«      }
|
j                  d«      D �cg c]#  }|j                  «       sŒ|j                  «       ‘Œ% }}g d¢}g }|D ]-  Št        ˆfd„|D «       «      rŒ‰dv rŒ|j                  ‰«       Œ/ |rdj                  |«      ndj                  |«      }||fS c c}w )Núhtml.parserÚdivÚdetail)Úclass_r   ÚaT)Úhrefr   z"\.(pdf|doc|docx|xls|xlsx|zip|rar)$Úp©r
   ú&nbsp;Úbrú
r   )u   æ–‡ç« æ�¥æº�u   å�‘å¸ƒæ—¶é—´u	   æµ�è§ˆé‡�u   æ‰“å�°u   åˆ†äº«c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0r   Úls     €r   ú	<genexpr>z"extract_content.<locals>.<genexpr>3   s   øè ø€ Ò-˜!ˆq�AŒvÑ-ùs   ƒ)u   å…¬ç¤ºå…¬å‘Šr   z

)r   ÚfindÚfind_allÚreÚsearchÚIÚappendr   ÚBASEr   Úreplace_withÚsplitr
   ÚanyÚjoin)Úhtmlr   r   Úattachmentsr   ÚhÚ
text_partsr   Útxtr   Úall_textr   ÚlinesÚskip_patternsÚclean_linesÚcontents              `    r   Úextract_contentr6      s¢  ø€ Ü˜˜}Ó-€DØ�Y‰Y�u XˆYÓ.€FÙØ�2ˆvˆð €KØ�_‰_˜S tˆ_Ó,ò 1ˆØˆf‰IˆÜ�9‰9Ð:¸A¼r¿t¹tÕDØ×Ñœw¤t¨QÓ/Õ0ð1ð €JØ�_‰_˜SÓ!ò #ˆØ�j‰j˜tˆjÓ$ˆÚ�3˜(“?Ø×Ñ˜cÕ"ð#ð �o‰o˜dÓ#ò ˆØ
�‰˜Õðð �‰¨°TˆÓ:€Hà (§¡¨tÓ 4ÖB˜1¸¿¹½	ˆQ�W‰W�YÐB€EÐBò V€MØ€KØò ˆÜÓ-˜}Ô-Ô-ØØÐ*Ñ*ØØ×Ñ˜1Õðñ +6ˆf�k‰k˜+Ô&¸6¿;¹;ÀzÓ;R€GØ�KÐÐùò Cs   ÄF&Ä2F&c                 óˆ  — 	 t        j                  | t        t        d¬«      }d|_        t        |j                  «      dk  rg S 	 t        |j                  d«      }g }|j                  d	d
¬«      D ]š  }|j                  d«      }|r|j                  d«      sŒ(t        | |d   «      }|j                  d¬«      }|s|j                  dd«      }|sŒ`|j                  d«      }	|	r|	j                  d¬«      nd}
|j                  |||
f«       Œœ |S # t        $ r)}t        dj                  | |«      d¬«       g cY d }~S d }~ww xY w)Né   ©ÚheadersÚverifyÚtimeoutúutf-8éô  z[ERROR] {}: {}T©Úflushr   ÚliÚ
content_li)Úidr   r   r   Útitler   Úspan)ÚrequestsÚgetÚHEADERSÚVERIFYÚencodingÚlenÚtextÚ	ExceptionÚprintÚformatr   r"   r!   r   r   r&   )ÚurlÚrÚer   ÚitemsrA   r   r   rD   rE   Údates              r   Úparse_list_pagerU   <   s/  € ðÜ�L‰L˜¤g´fÀbÔIˆØˆŒ
Üˆq�v‰v‹;˜ÒØˆIð ô ˜Ÿ™ Ó/€DØ€Eà�m‰m˜D \ˆmÓ2ò *ˆØ�G‰G�C‹LˆÙ˜Ÿ™˜fœØÜ�s˜A˜f™IÓ&ˆØ—
‘
 �
Ó&ˆÙØ—E‘E˜' 2Ó&ˆEÙØØ�w‰w�v‹ˆÙ,0ˆt�}‰} 4ˆ}Ô(°bˆØ�‰�e˜T 4Ð(Õ)ð*ð €Løô+ ò ÜÐ×%Ñ% c¨1Ó-°TÕ:Ø�	ûðús   ‚AD Ä	EÄD<Ä6EÄ<Ec                  óì   — t        j                  t        «      } | j                  «       }t	        «       }|j                  dt        f«      D ]  }|j                  |d   «       Œ | j                  «        |S )Nz.SELECT page_url FROM gov_raw WHERE site_name=?r   )	Úsqlite3ÚconnectÚDBÚcursorÚsetÚexecuteÚ	SITE_NAMEÚaddÚclose)ÚconnÚcÚurlsÚrows       r   Úget_existing_urlsrd   Y   s]   € Ü�?‰?œ2Ó€DØ�‰‹€AÜ‹5€DØ�y‰yÐIÌIÈ<ÓXò ˆØ�‰��Q‘Õðà‡J�J„LØ€Kr   c           
      óº  — | syt        j                  t        «      }|j                  «       }d}| D ]U  }	 |j	                  d|d   |d   |d   |d   d d |d   t
        f«       |j                  dkD  r|j                  «        |dz  }ŒW |j                  «        |S # t        $ r6}t        d	j                  |«      d
¬«       |j                  «        Y d }~Œ¤d }~ww xY w)Nr   zoINSERT OR IGNORE INTO gov_raw (title, page_url, content, summary, publish_date, site_name) VALUES (?,?,?,?,?,?)rD   rP   r5   r>   Úpub_dateé   z[DB ERROR] {}Tr?   )rW   rX   rY   rZ   r\   r]   ÚrowcountÚcommitrM   rN   rO   Úrollbackr_   )rS   r`   ra   ÚsavedÚitemrR   s         r   Ú
save_batchrm   b   sÝ   € ÙØÜ�?‰?œ2Ó€DØ�‰‹€AØ€EØò ˆð
	Ø�I‰Ið BØ�g‘  U¡¨T°)©_¸dÀ9¹oÈdÈsÐ>SÐUYÐZdÑUeÔgpÐqôð �z‰z˜AŠ~Ø—‘”Ø˜‘
�øðð 	‡J�J„LØ€Løô	 ò 	Ü�/×(Ñ(¨Ó+°4Õ8Ø�M‰M�O‰Oûð	ús   µABÂ	CÂ$,CÃCc                 óN   — | dk(  r	t         dz   S t         dj                  | «      z   S )Nrg   z/glist.shtmlz/glist_{}.shtml)r'   rO   )Úpages    r   Úget_page_urlrp   w   s+   € Øˆq‚yÜ�nÑ$Ð$äÐ'×.Ñ.¨tÓ4Ñ4Ð4r   c            
      ó>  — t        «       } t        dj                  t        | «      «      d¬«       g }t	        dt
        dz   «      D ]¤  }t        |«      }t        dj                  |t
        «      d¬«       t        |«      }|st        dj                  |«      d¬«        nM|j                  |«       t        dj                  t        |«      «      d¬«       t        j                  d«       Œ¦ t        d	j                  t        |«      «      d¬«       g }d
}t        |d«      D �]  \  }\  }}	}
|	| v rŒ	 t        j                  |	t        t        d¬«      }d|_        t%        |j&                  «      \  }}|rt        |«      dk  r t        dj                  |d d «      d¬«       Œ�|j)                  ||	|
||rdj+                  |«      nddœ«       t        |«      dk\  r:t-        |«      }||z  }t        dj                  |t        |«      ||«      d¬«       g }t        j                  d«       �Œ
 |rt-        |«      }||z  }t        dj                  |t        | «      |z   «      d¬«       y # t"        $ r+}t        dj                  |d d |«      d¬«       Y d }~�Œvd }~ww xY w)Nz[START] Already in DB: {}Tr?   rg   z[PAGE {}/{}]z  Empty page {}, stoppingz
  {} itemsg      à?z[TOTAL] {} items from listr   r8   r9   r=   z  [SKIP] {} - {}é(   é   z  [SKIP] No/short content: {}r   r   )rD   rP   rf   r5   r-   z)  [{}/{}] Batch saved: {}, cumulative: {}g333333Ó?z[DONE] New: {}, Total in DB: {})rd   rN   rO   rK   ÚrangeÚTOTAL_PAGESrp   rU   ÚextendÚtimeÚsleepÚ	enumeraterF   rG   rH   rI   rJ   rM   r6   rL   r&   r+   rm   )Úexisting_urlsÚ	all_itemsro   rP   rS   ÚbatchÚ	total_newÚirD   Ú
detail_urlrT   rQ   rR   r5   r-   rk   s                   r   Úmainr€   }   sj  € Ü%Ó'€MÜ	Ð
%×
,Ñ
,¬S°Ó-?Ó
@ÈÕMð €IÜ�aœ q™Ó)ò 	ˆÜ˜4Ó ˆÜˆn×#Ñ# D¬+Ó6¸dÕCÜ Ó$ˆÙÜÐ-×4Ñ4°TÓ:À$ÕGÙØ×Ñ˜ÔÜˆl×!Ñ!¤# e£*Ó-°TÕ:Ü�
‰
�3�ð	ô 
Ð
&×
-Ñ
-¬c°)«nÓ
=ÀTÕJð €EØ€Iä(1°)¸QÓ(?ó Ñ$ˆÑ$ˆE�:˜tØ˜Ñ&Øð	Ü—‘˜Z´ÄÐQSÔTˆAØ ˆAŒJô
  /¨q¯v©vÓ6Ñˆ�Ùœ#˜g›,¨Ò+ÜÐ1×8Ñ8¸¸sÀ¸ÓDÈDÕQØà�‰ØØØØÙ5@˜4Ÿ9™9 [Ô1Àbñ
ô 	ô ˆu‹:˜ÒÜ˜uÓ%ˆEØ˜ÑˆIÜÐ=×DÑDÀQÌÈIËÐX]Ð_hÓiÐquÕvØˆEä�
‰
�3Žð=ñ@ Ü˜5Ó!ˆØ�UÑˆ	ä	Ð
+×
2Ñ
2°9¼cÀ-Ó>PÐS\Ñ>\Ó
]ÐeiÖjøô; ò 	ÜÐ$×+Ñ+¨E°#°2¨J¸Ó:À$ÕGÝûð	ús   Ä2(I(É(	JÉ1 JÊJÚ__main__)Ú__doc__rF   r#   rW   ÚsysÚosrw   Úbs4r   Úurllib.parser   rI   ÚpackagesÚurllib3Údisable_warningsr'   rH   rY   r]   ru   Ú	MAX_PAGESr   r6   rU   rd   rm   rp   r€   Ú__name__r   r   r   ú<module>rŒ      s“   ðá 2ß +× +× +Ý Ý  à	€Ø × Ñ × Ñ × *Ñ *Ô ,Ø+€ØÐWÐ
X€Ø€Ø$€	Ø€Ø€	òDò' òRò:òò*5ò;kðz ˆzÒÙ…Fð r   