一、爬蟲記得基本方法
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