上一節我們學習了python3藉助requests類庫爬取網頁數據,這一節我們繼續深入的講解python爬蟲的實現。今天要將的是使用python3爬取網絡圖片,並保存到本地。
本節知識點
1,python3爬取網站源碼
2,正則匹配獲取圖片鏈接
3,使用python3將不怕保存到本地
一,首先我們來看下要爬取的網址
下圖箭頭所指的就是我們要爬取的圖片。
二,爬取網址源碼到本地
通過上圖我們可以看到,我們成功的爬取到了網站源碼,而這個網站的 <img 圖片顯示標籤裏用了 data-src 懶加載來顯示圖片,所以我們接下來要做的就是使用正則表達式來匹配出網站源碼裏的圖片鏈接。
三,正則表達式匹配圖片鏈接
通過上圖可以看出,我們成功的匹配到了網站源碼裏的圖片鏈接,接下來,我們就要把這個圖片保存在本地了。
四,保存圖片到本地
如上圖,我們做保存圖片的時候,需要先在我們代碼的外層目錄創建一個 imgs文件夾,用於存放圖片。然後編寫核心代碼。
五,完整代碼如下。
六,運行代碼,看下效果
可以看下我們爬取到的圖片
最後把完整代碼貼給大家
# python3爬取網絡圖片
import requests
import re
# 第一個爬取網址
url = 'http://www.nipic.com/photo/jingguan/ziran/index.html'
# 獲得網頁源碼
data = requests.get(url).text
# print("網站源碼", data)
# 圖片正則表達式
regex = r'data-src="(.*?.jpg)"'
# re是一個列表
pa = re.compile(regex) # 創建一個pa模板,使其符合匹配的網址
ma = re.findall(pa, data) # findall 方法找到data中所有的符合pa的對象,添加到re中並返回
# print(ma)
# 將ma中圖片網址依次提取出來
i = 0
for image in ma:
i += 1
image = requests.get(image).content
print(str(i) + '.jpg 正在保存。。。')
with open('../imgs/' + str(i) + '.jpg', 'wb') as f: # 注意打開的是就jpg文件
f.write(image)
print('保存完畢')
往期文章
- python入門001~python開發工具 pycharm的安裝與破解(mac和window都有講)
https://www.jianshu.com/p/dc8299467718 - python入門002~創建屬於自己的第一個python項目
https://www.jianshu.com/p/eda772bde32a - python入門003~python3的安裝~以python3最新版爲例(Mac window都有講)
https://www.jianshu.com/p/4bb23e40a7ac - python入門004~創建屬於自己的第一個python3項目~python3基礎知識的講解
https://www.jianshu.com/p/0fadc0369abd - python入門005~基本數據類型和變量的學習
https://www.jianshu.com/p/44c2a7b34cbf - python入門010~python3操作數據庫 藉助pycharm快速連接並操作mysql數據庫
https://www.jianshu.com/p/a23f414cc2f2 - python入門011~python3藉助requests類庫3行代碼爬取網頁數據
https://www.jianshu.com/p/cf22a679e96f - python入門012~使用python3爬取網絡圖片並保存到本地
https://www.jianshu.com/p/651effd4f3b8 - python入門013~爬蟲篇,網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞
https://www.jianshu.com/p/7e59f52ea0b6 - python入門014~把爬取到的數據存到數據庫,帶數據庫去重功能
https://www.jianshu.com/p/5ba719a7d8cb - python入門015---python爬取前程無憂51job的職位信息並存入mysql數據庫(帶數據去重)
https://www.jianshu.com/p/fe434693781f
視頻教程
點擊這個地址可以試看:https://www.bilibili.com/video/av55521385/
如果覺得視頻教程不錯,可以加老師微信購買 ,老師微信 2501902696