Pythonに基づいて51 ctoブログのページを登って情報の過程を解析します。


紹介する
爬虫類といえば、インターネットの友達はみんなよく知らないはずです。今はPythonを使ってウェブサイトのデータを取るのは非常によくある手段です。多くの友達は豆瓣の情報を登用しています。
実験環境
1.Pythonをインストールする3.7
2.requests、bs 4モジュールをインストールする
実験ステップ
1.Python 3.7環境をインストールする
2.requests、bs 4モジュールをインストールする
cmdを開けて、入力:pip install requests-ihttps://pypi.tuna.tsinghua.edu.cn/simple/
bs 4を再インストールし、入力:pip install bs 4-ihttps://pypi.tuna.tsinghua.edu.cn/simple/
取付後に-iを加えるhttps://pypi.tuna.tsinghua.edu.cn/simple/ 清华镜像からモジュールをダウンロードすると、速度が多くなります。
3.コードの作成

#   51cto    
import requests
import bs4
import re

def open_url(url):
  #     
  # proxies = {"http": "127.0.0.1:1080", "https": "127.0.0.1:1080"}
  headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
           'Chrome/57.0.2987.98 Safari/537.36'}

  # res = requests.get(url, headers=headers, proxies=proxies)
  res = requests.get(url, headers=headers)

  return res

def find_titles(res):
  soup = bs4.BeautifulSoup(res.text, 'html.parser')

  #    
  titles = []
  targets = soup.find_all("a", class_="tit")
  for each in targets:
    titles.append(each.text.strip())

  #    
  reads = []
  read1 = soup.find_all("p", class_="read fl on")
  read2 = soup.find_all("p", class_="read fl")
  for each in read1:
    reads.append(each.text)
  for each in read2:
    reads.append(each.text)

  #    
  comment = []
  targets = soup.find_all("p", class_='comment fl')
  for each in targets:
    comment.append(each.text)

  #   
  collects = []
  targets = soup.find_all("p", class_='collect fl')
  for each in targets:
    collects.append(each.text)

  #   
  result = []
  length = len(titles)
  for i in range(length):
    result.append(titles[i] + '
' + reads[i] + ' ' + comment[i] + ' ' + collects[i] + '
') return result # def find_depth(res): soup = bs4.BeautifulSoup(res.text, 'html.parser') depth = soup.find('li', class_='next').previous_sibling.previous_sibling.text return int(depth) def main(): host = "https://blog.51cto.com/13760351" res = open_url(host) depth = find_depth(res) result = [] for i in range(1, depth + 1): # 1 6 url = host + '/p' + str(i) # /pi res = open_url(url) result.extend(find_titles(res)) # with open("51cto .txt", "w", encoding="utf-8") as f: for each in result: f.write(each) # if __name__ == "__main__": main()
4.コードを実行し、効果を確認する

        postfix--    (      )     
   10000+    2    9
(      !) VMware Workstation 14    CentOS 7 【    】   
   10000+    10    0
CentOS 7   YUM   MySQL 5.7
   136    0    1
Docker   (      )
   153    0    0
        
   159    0    0
K8S    Rancher 2.X   
   1068    0    0
python    ( )
   260    0    0
DNS--    
   170    0    0
python    ( )
   353    0    0
K8S   Dashboard  nginx  
   124    0    0
CentOS 7     K8S  
   280    0    0
MySQL  --    
   136    0    0
CentOS 7   SVN
   192    2    0
MYSQL      
   178    0    0
CentOS 8      nginx   
   509    0    0
CentOS 7   nginx    
   207    0    0
Linux       --Awk    
   940    0    0
Liunx      
   163    0    0
Linux    --Sed     
   178    0    0
MYSQL  
   110    0    0
MYSQL   --    
   269    0    0
MYSQL        
   271    0    0
Ansible     
   119    0    0
CentOS 8         -- Ansible
   358    0    0
CentOS 7     pv  (     )
   2139    0    4
MYSQL  --   ,    
   242    0    0
MySQL      
   178    0    0
MYSQL   --         
   256    0    0
MYSQL  --      
   132    0    0
MYSQL     --    
   205    0    0
ELK     Tomcat    
   316    0    0
CentOS 8   ELK      
   730    0    0
Docker          
   246    0    0
Docker       
   143    0    0
Docker     
   195    0    0
Docker     
   143    0    0
CentOS 8          (   )
   4570    0    0
Docker    nginx + tomcat
   501    0    0
Docker   war   
   2173    0    1
         Docker   
   901    0    0
CentOS 8   docker   
   4848    0    0
   confluence   jira      
   225    0    0
CentOS 7.6   Gitlab  
   234    0    0
confluence        
   516    0    0
Shell     tomcat       
   263    0    0
      Centos7   465       
   774    0    0
MQTT         ,        
   640    0    0
CentOS 7.6   Redis    
   150    0    0
CentOS 7.6      Confluence   Jira(         )
   5800    0    0
Centos 7   MQTT(EMQ)   
   943    0    0
CentOS 7   yum    php  
   2527    0    0
Python3      
   886    0    0
Python3   Mysql   
   820    0    1
Selenium      8     
   1536    0    0
Python Selenium     zabbix      
   568    0    0
Zabbix   QQ      
   2043    0    0
CentOS 7         Nexus
   664    0    1
  CentOS 7        ifconfig  
   687    0    0
CentOS 7              
   1161    0    0
Shell                --Postfix
   7066    0    4
               ip,          
   10000+    6    0
Shell       cobbler(  +  )
   10000+    3    0
Shell        Cobbler (   +   )
   5292    0    6
CentOS 7.4      7.6
   4738    4    0
     --    windows WiFi  
   4518    0    0
Jenkins         
   7574    0    1
           Python    
   1671    6    1
Jenkins     nodejs  (    )
   1445    0    2
Jenkins      Java  (    )
   9192    0    1
Jenkins     --war 
   9444    2    3
shell    python     zabbix     
   1112    0    1
 CentOS 7      Jenkins  (     )
   7223    4    0
Window 10   python 3.7 + selenium (      )
   2984    0    0
CentOS 7     Jenkins
   3259    0    1
    Discuz  (shell + Python        )
   1783    0    0
Shell         LA/NMP    (    +  )
   3068    0    0
shell      Tomcat  
   2192    0    1
【    !】Vi        
   789    4    1
    ---  LAMP   + Discuz  【    】
   2032    0    2
【    】PXE        CentOS 6
   4144    0    1
 CentOS 7    Oracle 12c 【    】
   4776    0    1
    MFS        【     】
   3049    0    1
Memcached + LAMP       【    】
   3523    4    0
  MySQL-MMM      
   1123    0    0
   MySQL     (     )
   573    2    1
Mysql       
   716    0    0
mysql       ---         
   999    0    0
  Haproxy   web  
   496    2    0
MySQL        (5.7    )
   568    0    0
  PXE    ----      ,          
   1521    0    0
  PXE       ----      
   705    0    0
Nginx       ,          
   767    0    0
CentOS 7   Nginx+Tomcat     
   685    0    0
Nginx       
   618    0    0
Nginx       ---     、    、    
   599    0    0
    Tomcat   
   346    0    0
Apache      ----            
   748    0    0
      Apache  (     )
   638    0    1
Apache    web  
   747    0    0
CentOS 6 yum   Apache  
   2072    0    0
  AWStats      (  awstats   )
   10000+    0    0
    cobbler        (  epel )
   10000+    8    2
DNS          !
   679    0    0
FTP         ---      
   4440    0    0
FTP   --        ,      
   749    0    0
    FTP   --           
   1296    2    0
Linux 6.5         yum  
   2206    0    0
【   】       John the Ripper     (    )
   2669    4    1
   Linux   window     
   634    12    0
Redhat Linux 6.5         【    】
   7550    8    2
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。