Ë
    Á•jC+  ã                   ó˜   — 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mZ dZdZ	dZ
ddd	d
œZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u\   
æ–°ä¹¡ä¼�ä¸š-å…¬å‘Šå…¬ç¤º çˆ¬è™«
https://www.0373ds.com/gongshi/
Discuz! ç³»ç»Ÿ, GBKç¼–ç �
é    N)ÚBeautifulSoupu   æ–°ä¹¡ä¼�ä¸š-å…¬å‘Šå…¬ç¤ºu   ä¼�ä¸šzhttps://www.0373ds.com/gongshi/zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languagez/root/search.dbc           	      ó–  — t        |«      D ]@  }	 t        j                  | t        d¬«      }|j                  }	 |j                  dd¬«      c S  y #  	 |j                  dd¬«      cY c S #  |j                  dd¬«      cY cY c S xY wxY w# t        $ r}t        d|› d	|d
z   › �«       Y d }~nd }~ww xY wt        j                  d«       Œ¿)Né   )ÚheadersÚtimeoutzutf-8Úreplace)ÚerrorsÚgbkÚgb18030z	  Error: z, retry é   é   )
ÚrangeÚrequestsÚgetÚHEADERSÚcontentÚdecodeÚ	ExceptionÚprintÚtimeÚsleep)ÚurlÚmax_retriesÚattemptÚrÚrawÚes         ú$/root/gov_crawler/crawl_0373ds_v2.pyÚfetchr       sÅ   € Ü˜Ó%ò ˆð	6Ü—‘˜S¬'¸2Ô>ˆAØ—)‘)ˆCðCØ—z‘z '°)�zÓ<Ò<ðð  øðCðCØŸ:™: e°I˜:Ó>Ô>øðCØŸ:™: i¸	˜:ÓBÖBþÜò 	6Ü�I˜a˜S ¨°©¨Ð4×5Ñ5ûð	6úä�
‰
�1�sR   �(B¹AÁBÁA*Á%BÁ&BÁ*BÁ?BÂBÂBÂBÂ	B2ÂB-Â-B2c                 ób  — g }t        | d«      }|j                  dd¬«      D ]Š  }|d   }d|v sŒ|j                  d«      sŒ|j                  d¬«      }|sŒ4t	        |«      d	kD  sŒC|j                  d
«      s$t        j                  j                  t        |«      }|j                  ||f«       ŒŒ |S )Núhtml.parserÚaT©Úhrefr%   z	/article-z.html©Ústripé   Úhttp)r   Úfind_allÚendswithÚget_textÚlenÚ
startswithr   ÚcompatÚurljoinÚBASE_URLÚappend)ÚhtmlÚitemsÚsoupr#   r%   Útitles         r   Úparse_list_pager7   +   s¡   € Ø€EÜ˜˜}Ó-€DØ�]‰]˜3 Tˆ]Ó*ò ,ˆØ�‰yˆØ˜$Ò 4§=¡=°Õ#9Ø—J‘J T�JÓ*ˆEÚœ˜U› a›Ø—‘ vÔ.Ü#Ÿ?™?×2Ñ2´8¸TÓB�DØ—‘˜e T˜]Õ+ð,ð €Ló    c                 ó€  — t        | d«      }|j                  dd¬«      }|r|j                  d¬«      nd}|sL|j                  d«      }|�r|j                  d¬«      }t        j                  d	d|«      j                  «       }nÚt        j                  d
d|«      j                  «       }d|v r±|j                  d¬«      }|r�g }|j                  ddg«      D ]G  }|j                  d¬«      }	|	sŒt        |	«      dkD  sŒ'|j                  |	«       t        |«      dk\  sŒG n dj                  |«      }
|
r+t        |
«      t        |«      kD  rd|
vr|
j                  «       }d}|j                  dd¬«      }|r7t        j                  d|j                  «       «      }|r|j                  d«      }d}g }|j                  d¬«      }|s|j                  d¬«      }|s|j                  dd„ ¬«      }|�rÏ|j                  g d¢«      D ]  }|j                  «        Œ g }|j                  D �]¦  }t        |d«      r|j                  €Œ|j!                  d«      xs g }t#        |t$        «      rdj                  |«      n
t'        |«      }|j                  dv rd|v rŒq|j                  dk(  rd|v rŒ…|j                  dk(  r|dv rŒ™|j                  dk(  rd|v rŒ­|j                  dk(  rt        j                  d|«      rŒÓ|j                  dk(  r.t'        |«      }|rt        |«      d kD  r|j                  |«       �Œ|j                  dd¬«      }|rt        |«      d!k  r�Œ5t        j                  d"d#„ |«      }t        j(                  d$|«      st        j(                  d%|«      r�Œ{t        j                  d&d|«      }|j                  d'|› d(�«       �Œ© d)j                  |«      }|j                  d*d¬+«      D ]È  }|d,   }t        j                  d-|t        j*                  «      }t        j                  d.|t        j*                  «      }|s|sŒW|j-                  d/«      s t.        j0                  j3                  ||«      }|rd0}n(|j                  d¬«      xs |j5                  d1«      d2   }|j                  ||d3œ«       ŒÊ |rst        j                  d4d|t        j6                  ¬5«      }t        j                  d6d|t        j6                  ¬5«      }t        j                  d7d8|«      j                  «       }|rt        |j                  «       «      d k  r�|j                  d9«      }|rn|j                  d)d¬«      j5                  d)«      D �cg c]/  }t        |j                  «       «      d:kD  sŒ |j                  «       ‘Œ1 }}d)j                  |d d; «      }t        |j                  «       «      d k  r)d<|› d=|› d>�}|r|d?d)j                  d@„ |D «       «      z   z  }||||rt9        j:                  |dA¬B«      |dCœS d|dCœS c c}w )DNr"   Úh1Úph)Úclass_Tr&   Ú r6   z\s*\.{3,}.*$z\s*(?:\.{3,}\s*)+$ú...Úarticle_content)ÚidÚpÚdivé   r   Úxg1z'(\d{4}-\d{1,2}-\d{1,2}\s+\d{1,2}:\d{2})r   Úvwc                 ó   — | xr
 d| v xr d| v S )NÚbmrE   © )Úcs    r   ú<lambda>zparse_detail.<locals>.<lambda>g   s   € ¨qÒ/L°T¸Q°YÒ/LÀ4È1À9€ r8   )ÚscriptÚstyleÚiframeÚnameÚclassú )r:   )zh hmÚhmÚszpren|o cl ptm|share|clickÚtableé   r(   z\(https?://(?:pan\.baidu\.com|aliyundrive\.com|lanzou[^\s<"]*|123pan\.com|quark\.cn)[^\s<"]*)c                 ó,   — d| j                  d«      › d�S )Nz	<a href="r   u   ">å…¨æ–‡ç½‘ç›˜é“¾æŽ¥</a>)Úgroup)Úms    r   rJ   zparse_detail.<locals>.<lambda>Ž   s   € ˜I a§g¡g¨a£j \Ð1IÐJ€ r8   u   [:ï¼š][^\n]*u   é“¾æŽ¥\s*[:ï¼š]?u
   ^[:ï¼š]\s*z<p>z</p>ú
r#   r$   r%   z'\.(doc|docx|pdf|xls|xlsx|xlsm|rar|zip)$z1(pan\.baidu\.com|aliyundrive|lanzou|123pan|quark)r)   u   å…¨æ–‡ç½‘ç›˜é“¾æŽ¥ú/éÿÿÿÿ)r6   r   u   ^\s*é“¾æŽ¥\s*[:ï¼š]?\s*$)Úflagsu   ^\s*[:ï¼š]\s*[^\s<]{0,20}\s*$z\n{3,}z

Úbodyé
   é<   z<p><a href="z">z</a></p>u   

é™„ä»¶ï¼š
c              3   ó:   K  — | ]  }d |d   › d|d   › d�–— Œ y­w)ú[r6   z](r   ú)NrH   ©Ú.0r#   s     r   ú	<genexpr>zparse_detail.<locals>.<genexpr>¸   s)   è ø€ Ò4hÐWX°q¸¸7¹¸ÀBÀqÈÁxÀjÐPQÔ5RÑ4hùs   ‚F)Úensure_ascii)r6   Úpublish_dater   ÚattachmentsÚpage_url)r   Úfindr,   ÚreÚsubr'   r*   r-   r2   ÚjoinÚsearchrV   Ú	decomposeÚchildrenÚhasattrrN   r   Ú
isinstanceÚlistÚstrÚ	fullmatchÚIr.   r   r/   r0   ÚsplitÚMÚjsonÚdumps) r3   r   r5   Útitle_elr6   ÚtÚacÚ
full_partsrA   ÚtxtÚcandÚdateÚinfo_elrW   r   rg   rE   ÚtagÚ
paragraphsÚchildÚclsÚcls_strÚtblÚtextr#   r%   Úis_fileÚis_cloudÚattach_titler\   ÚlÚliness                                    r   Úparse_detailrŽ   8   s³  € Ü˜˜}Ó-€Dð �y‰y˜ dˆyÓ+€HÙ-5ˆH×Ñ DÐÔ)¸2€EÙØ�I‰I�gÓˆÚØ—J‘J T�JÓ*ˆEä—F‘F˜?¨B°Ó6×<Ñ<Ó>‰Eô —‘Ð,¨b°%Ó8×>Ñ>Ó@ˆà�E‰>Ø—‘Ð/�Ó0ˆBÙØ�
ØŸ™ c¨5 \Ó2ò "�AØŸ*™*¨4˜*Ó0�CÚœs 3›x¨!›|Ø"×)Ñ)¨#Ô.Ü˜z›?¨aÓ/Ù!ð"ð —w‘w˜zÓ*�ÙœC ›I¬¨E«
Ò2°uÀDÑ7HØ ŸJ™J›L�Eð €DØ�i‰i˜ EˆiÓ*€GÙÜ�I‰IÐ@À'×BRÑBRÓBTÓUˆÙØ—7‘7˜1“:ˆDð €GØ€Kà	�‰Ð'ˆÓ	(€BÙØ�Y‰Y˜dˆYÓ#ˆÙØ�Y‰Y�uÑ%LˆYÓMˆâ	Ø—;‘;Ò<Ó=ò 	ˆCØ�M‰M�Oð	ð
 ˆ
Ø—[‘[ó %	0ˆEÜ˜5 &Ô)¨U¯Z©ZÐ-?ØØ—)‘)˜GÓ$Ò*¨ˆCÜ'1°#´tÔ'<�c—h‘h˜s”mÄ#ÀcÃ(ˆGØ�z‰z˜WÑ$¨°©ØØ�z‰z˜SÒ  U¨gÑ%5ØØ�z‰z˜UÒ" w°.Ñ'@ØØ�z‰z˜UÒ" s¨g¡~Øà�z‰z˜UÒ"¤r§y¡yÐ1MÈwÔ'WØà�z‰z˜WÒ$Ü˜%“j�Ùœ3˜s›8 bš=Ø×%Ñ% cÔ*Ùà—>‘> "¨D�>Ó1ˆDÙœ3˜t›9¨š>Ùô —6‘6ØoÙJØóˆDô �|‰|˜O¨TÔ2´b·l±lÐCVÐX\Ô6]ÙÜ—6‘6˜-¨¨TÓ2ˆDØ×Ñ  D 6¨Ð.Ö/ðK%	0ðN —)‘)˜JÓ'ˆð —‘˜S t�Ó,ò 	IˆAØ�V‘9ˆDÜ—i‘iÐ JÈDÔRT×RVÑRVÓWˆGÜ—y‘yÐ!UÐW[Ô]_×]aÑ]aÓbˆHÙš(Ø—‘ vÔ.Ü#Ÿ?™?×2Ñ2°3¸Ó=�DÙØ#7‘Là#$§:¡:°D :Ó#9Ò#P¸T¿Z¹ZÈ»_ÈRÑ=P�LØ×"Ñ"¨\À$Ñ#GÕHð	Iñ Ü—&‘&Ð4°b¸'ÌÏÉÔNˆÜ—&‘&Ð9¸2¸wÌbÏdÉdÔSˆä—&‘&˜ F¨GÓ4×:Ñ:Ó<ˆñ ”c˜'Ÿ-™-›/Ó*¨RÒ/Ø�y‰y˜Ó ˆÙØ(,¯©°dÀ$¨Ó(G×(MÑ(MÈdÓ(SÖk 1ÔWZÐ[\×[bÑ[bÓ[dÓWeÐhjÓWj�Q—W‘W•YÐkˆEÐkØ—i‘i  c r 
Ó+ˆGä
ˆ7�=‰=‹?Ó˜bÒ Ø    R¨ w¨hÐ7ˆÙØÐ(¨4¯9©9Ñ4hÐ\gÔ4hÓ+hÑhÑhˆGð ØØÙFQ”t—z‘z +¸EÔBØñð ð XZØñð ùò ls   Ö!X;Ö*X;c                 óJ  — g }t        d| dz   «      D �]  }|dk(  rt        }nt        › d|› �}t        d|› d|› �«       t        |«      }|sŒ:t	        |«      }|st        d«        |S t        dt        |«      › d�«       t        |«      D ]~  \  }\  }}t        d|dz   › d	t        |«      › d
|d d › d�«       t        |«      }	|	sŒ;t        |	|«      }
t        |
d<   t        |
d<   |j                  |
«       t        j                  d«       Œ€ t        j                  d«       �Œ |S )Nr   zindex.php?page=z  Page z: z  No items, stoppingz  Found z itemsz    [rY   ú] é2   r>   Ú	site_namerV   g      à?)r   r1   r   r    r7   r-   Ú	enumeraterŽ   Ú	SITE_NAMEÚGROUPr2   r   r   )Ú	max_pagesÚ	all_itemsÚpager   r3   r4   Úir6   Úitem_urlÚdetail_htmlÚdetails              r   Úcrawl_pagesr�   Â   s>  € Ø€IÜ�a˜ Q™Ó'ó ˆØ�1Š9Ü‰Cä�J˜o¨d¨VÐ4ˆCä�˜�v˜R ˜uÐ%Ô&Ü�S‹zˆÙØä Ó%ˆÙÜÐ(Ô*Øð  Ðô 	�œ˜U›˜ FÐ+Ô,ä$-¨eÓ$4ò 		Ñ ˆAÑ ��xÜ�E˜!˜A™#˜˜a¤ E£
˜|¨2¨e°C°R¨j¨\¸Ð=Ô>Ü ›/ˆKÙØÜ! +¨xÓ8ˆFÜ"+ˆF�;ÑÜ#ˆF�7‰OØ×Ñ˜VÔ$Ü�J‰J�s�Oð		ô 	�
‰
�1Žð9ð< Ðr8   c                 ó  — dd l }|j                  t        «      }|j                  d«       |j	                  «       }d}d}| D ]�  }	 |j                  d|d   |d   |d   |j                  dd«      d|j                  d	d«      |j                  d
d«      |j                  dd«      df	«       |j                  dkD  r|dz  }n|dz  }Œƒ |j                  «        |j                  «        ||fS # t        $ r}t        d|› �«       Y d }~ŒÄd }~ww xY w)Nr   zPRAGMA busy_timeout=5000zà
                INSERT OR IGNORE INTO gov_raw 
                (site_name, page_url, title, publish_date, summary, content, category, attachments, script_name)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
            r’   rh   r6   rf   r=   r   rV   rg   zcrawl_0373ds_v2.pyr   z    DB Error: )Úsqlite3ÚconnectÚDB_PATHÚexecuteÚcursorr   Úrowcountr   r   ÚcommitÚclose)r4   rŸ   ÚconnrI   ÚinsertedÚskippedÚitemr   s           r   Ú
save_to_dbr«   ä   s  € ÛØ�?‰?œ7Ó#€DØ‡L�LÐ+Ô,Ø�‰‹€Aà€HØ€GØò (ˆð	(Ø�I‰Ið ð
 �[Ñ! 4¨
Ñ#3°T¸'±]Ø—‘˜¨Ó,¨bØ—‘˜ BÓ'¨¯©°'¸2Ó)>Ø—‘˜¨Ó+Ð-Að	ô		ð �z‰z˜AŠ~Ø˜A‘‘à˜1‘�øð(ð& 	‡K�K„MØ‡J�J„LØ�WÐÐøô ò 	(Ü�N 1 #Ð&×'Ñ'ûð	(ús   ÁA>C)Ã)	D
Ã2DÄD
c            
      ó  — t        j                  dt        › �¬«      } | j                  ddd¬«       | j                  ddd¬«       | j                  d	t        d
d¬«       | j                  «       }|j                  s|j                  rd}|j                  rdnd}n|j                  }d|z  }t        d|› dt        › d�«       t        |«      }|st        d«       y t        dt        |«      › d�«       t        |«      \  }}t        d|› d|› �«       t        d«       |d d
 D ]d  }t        d|d   › d|d   d d › �«       |d   sŒ#t        j                  |d   «      }|sŒ>t        d d!j                  d"„ |d d# D «       «      › �«       Œf y )$Nu   çˆ¬å�–)Údescriptionz--testÚ
store_trueu   æµ‹è¯•æ¨¡å¼�)ÚactionÚhelpz--incrementalu   å¢žé‡�æ¨¡å¼�z--max-pagesr(   u   æœ€å¤§é¡µæ•°)ÚtypeÚdefaultr°   r   u   æµ‹è¯•u   å¢žé‡�u   å…¨é‡�(å‰�%dé¡µ)z=== u   æ¨¡å¼�: z ===zNo items collectedu   
å…±èŽ·å�– u
    æ�¡æ•°æ�®u   å…¥åº“: æ–°å¢ž u	   , è·³è¿‡ u   
=== å‰�5æ�¡é¢„è§ˆ ===z  [rf   r�   r6   r^   rg   u       é™„ä»¶: z, c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r6   NrH   rb   s     r   rd   zmain.<locals>.<genexpr>"  s   è ø€ Ò.L¸a¨q°­zÑ.Lùs   ‚é   )ÚargparseÚArgumentParserr”   Úadd_argumentÚintÚ
parse_argsÚtestÚincrementalr–   r   r�   r-   r«   rx   Úloadsrl   )	ÚparserÚargsÚendÚmoder4   r¨   r©   rª   Úattss	            r   ÚmainrÂ     s�  € Ü×$Ñ$°6¼)¸Ð1EÔF€FØ
×Ñ˜¨¸NÐÔKØ
×Ñ˜°À>ÐÔRØ
×Ñ˜¬C¸ÀÐÔPØ×ÑÓ€Dà‡y‚y�D×$Ò$ØˆØŸ9š9‰x¨(‰à�n‰nˆØ! CÑ'ˆä	ˆD���hœy˜k¨Ð
.Ô/Ü˜Ó€EáÜÐ"Ô#Øä	ˆLœ˜U›˜ JÐ
/Ô0Ü" 5Ó)Ñ€HˆgÜ	ˆO˜H˜: Y¨w¨iÐ
8Ô9ä	Ð#Ô%Ø�b�q�	ò PˆÜ��D˜Ñ(Ð)¨¨D°©M¸#¸2Ð,>Ð+?Ð@ÔAØ�ÓÜ—:‘:˜d =Ñ1Ó2ˆDÚÜ˜ T§Y¡YÑ.LÀ4ÈÈÀ8Ô.LÓ%LÐ$MÐNÕOñPr8   Ú__main__)r´   )Ú__doc__rj   rx   r   rµ   r   Úbs4r   r”   r•   r1   r   r¡   r    r7   rŽ   r�   r«   rÂ   Ú__name__rH   r8   r   ú<module>rÇ      s~   ðñó
 
Û Û Û Û Ý à'€	Ø€Ø,€ð DØOØ0ñ€ð
 €óò&òHòT òDò>PðB ˆzÒÙ…Fð r8   