Python學習第七天之爬蟲的學習與使用(爬取文字、圖片、 視頻)


一、爬蟲記得基本方法

1.1 爬蟲概述

​ 網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲

​ Python的爬蟲相對其他語言來說還是很簡單的,是通過requests 這個模塊來進行操作的

因此在使用python進行信息爬取之前,要確保你已經下載了requests 這個模塊,如果沒有下載通過:pip install requests這個命令下載一下就可以使用了.

1.2 爬蟲的使用方法

爬蟲是通過程序來對我們想要獲取信息進行爬取,一般是采用requests 請求獲取到網頁的信息,然后再對網頁的信息進行處理,拿到有效的數據.

  • 通過requests的get方法獲取到網頁的信息
  • 然后再提取出網頁源代碼
  • 通過正則表達式從源代碼中獲取需要的信息
  • 對信息再處理
  • 保存數據

二、爬蟲的操作實例

2.1 爬取文字

程序代碼:
# # 實例 爬取段子標題和內容
import requests
import re

# 要爬取網頁的鏈接
url = 'https://ishuo.cn/'
reponse = requests.get(url)
data = reponse.content.decode('utf-8')
# print(data)
res_title = re.findall('</span><a href="/subject/.*?">(.*?)</a>',data)
res_content = re.findall('<div class="content">(.*?)</div>',data)
# 創建一個字典用於存儲數據
data_dict = {}
for i in range(len(res_title)):
    data_dict[res_title[i]] = res_content[i]
for i in data_dict.items():
    print(f'title:{i[0]:<50} {i[1]:<200}')
運行結果:

title:因為她是你的母親 如果你得罪了老板,失去的只是一份工作;如果你得罪了客戶,失去的不過是一份訂單;是的,世上只有一個人可以得罪:你給她臉色看,你沖她發牢騷,你大聲頂撞她,甚至當 着她的面摔碗,她都不會記恨你,原因很簡單,因為她是你的母親。
title:這個笑話好內涵,你懂了沒? 有位非常漂亮的女同事,有天起晚了沒有時間化妝便急忙沖到公司。結果那天她被記曠工了……吃驚]
title:悟空和唐僧一起上某衛視非誠勿擾 悟空和唐僧一起上某衛視非誠勿擾,悟空上台,24盞燈全滅。理由:1.沒房沒車只有一根破棍. 2.保鏢職業危險.3.動不動打妖精,對女生不溫柔. 4.坐過牢,曾被壓五指山下500年。唐僧上台,嘩!燈全亮。 理由:1.公務員; 2.皇上兄弟,后台最硬 3.精通梵文等外語 4.長得帥 5.最關鍵一點:有寶馬!
title:為了某個在乎你的人,請節約你的真心 Save your heart for someone who cares. 為了某個在乎你的人,請節約你的真心!

2.2 對圖片的爬取

程序代碼:
# # #對圖片的爬取
# # 首先第一步要做的就是導入需要用到的模塊庫
import re
import requests
# 獲取要爬取信息頁面的內容
for i in range(10):
    url = f'http://www.nipic.com/design/acg/renwu/index.html?page={i+1}'
    reponse = requests.get(url)
    # 使用data變量將頁面信息傳遞過來
    data = reponse.text
    # 編寫正則表達式獲取有效的內容(每張圖片的url地址)
    results = re.findall('data-src="(.*?)"',data)
    # 循環拿出每個圖片的url
    count = 0
    print(f"正在爬出第{i+1}頁的信息...")
    for result in results :
        # 請求頁面獲取圖片信息存入變量中
        images_data = requests.get(result)
        # 取出文件名
        images_name = result.split('/')[-1]
        # 格式化 圖片信息成二進制形式
        images_content = images_data.content
        # 將二進制文件生成圖片並保存
        with open('images\\'+images_name, 'wb') as f:
           f.write(images_content)
           f.flush()
        count += 1
        print(f'保存第{count}張圖片成功')
運行結果:

正在爬出第1頁的信息...
保存第1張圖片成功
保存第2張圖片成功
保存第3張圖片成功
保存第4張圖片成功
保存第5張圖片成功
保存第6張圖片成功
保存第7張圖片成功
保存第8張圖片成功
保存第9張圖片成功
保存第10張圖片成功
保存第11張圖片成功
保存第12張圖片成功
保存第13張圖片成功

.....

2.3 對視頻的爬取

程序代碼:
# # # 對視頻的爬取
import re
import requests

# 要爬取網站的url
url = 'http://www.mod.gov.cn/v/'
response = requests.get(url)
response.encoding = 'utf8'
data = response.text
page_url = re.findall('<a href="(.*?.htm)"',data)
for i in page_url:
    page_url = 'http://www.mod.gov.cn/v/'+i
    page_res = requests.get(page_url)
    page_data = page_res.text
    video_url = re.findall('//Video (.*?.mp4)',page_data)[0]
    video_name = video_url.split('/')[-1]
    video_data = requests.get(video_url).content
    with open('videos\\'+video_name,'wb') as f:
        f.write(video_data)
        f.flush()
        break
運行結果:

會在程序文件夾下的videos文件夾中保存視頻的文件

總結

​ 今日份學習的是Python的爬蟲相關的知識。通過實際操作掌握了,python的強大, 對網頁信息的獲取以及內容處理這一塊的功能表示嘆服,學到了很多新的知識,也通過實際動手操作成功的對文字、圖片、視頻等網站進行了爬取,開心ing


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM