1. 程式人生 > >圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

製作爬蟲的步驟

製作一個爬蟲一般分以下幾個步驟:

  • 分析需求
  • 分析網頁原始碼,配合開發者工具
  • 編寫正則表示式或者XPath表示式
  • 正式編寫 python 爬蟲程式碼


學習Python中有不明白推薦加入交流裙
                  號:735934841
                  群裡有志同道合的小夥伴,互幫互助,
                  群裡有免費的視訊學習教程和PDF!

效果預覽

執行效果如下:

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

存放圖片的資料夾:

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

需求分析

我們的爬蟲至少要實現兩個功能:

  1. 是搜尋圖片
  2. 是自動下載

搜尋圖片:最容易想到的是爬百度圖片的結果,我們就上百度圖片看看:

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

隨便搜尋幾個關鍵字,可以看到已經搜尋出來很多張圖片:

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

分析網頁

我們點選右鍵,檢視原始碼:

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

開啟原始碼之後,發現一堆原始碼比較難找出我們想要的資源。

這個時候,就要用開發者工具!我們回到上一頁面,調出開發者工具,我們需要用的是左上角那個東西:(滑鼠跟隨)。

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

然後選擇你想看原始碼的地方,就可以發現,下面的程式碼區自動定位到了相應的位置。如下圖:

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

我們複製這個地址,然後到剛才的一堆原始碼裡搜尋一下,發現了它的位置,但是這裡我們又疑惑了,這個圖片有這麼多地址,到底用哪個呢?我們可以看到有thumbURL,middleURL,hoverURL,objURL

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

通過分析可以知道,前面兩個是縮小的版本,hoverURL 是滑鼠移動過後顯示的版本,objURL 應該是我們需要的,可以分別開啟這幾個網址看看,發現 objURL 的那個最大最清晰。

找到了圖片地址,接下來我們分析原始碼。看看是不是所有的 objURL 都是圖片。

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

發現都是以.jpg格式結尾的圖片。

編寫正則表示式

pic_url = re.findall('"objURL":"(.*?)",',html,re.S)

編寫爬蟲程式碼

這裡我們用了2個包,一個是正則,一個是 requests 包

#-*- coding:utf-8 -*-
import re
import requests

複製百度圖片搜尋的連結,傳入 requests ,然後把正則表示式寫好

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

url = '網頁連結
html = requests.get(url).text
pic_url = re.findall('"objURL":"(.*?)",',html,re.S)

因為有很多張圖片,所以要迴圈,我們打印出結果來看看,然後用 requests 獲取網址,由於有些圖片可能存在網址打不開的情況,所以加了10秒超時控制。

pic_url = re.findall('"objURL":"(.*?)",',html,re.S)
i = 1
for each in pic_url:
print each
try:
pic= requests.get(each, timeout=10)
except requests.exceptions.ConnectionError:
print('【錯誤】當前圖片無法下載')
continue

接著就是把圖片儲存下來,我們事先建立好一個 images 目錄,把圖片都放進去,命名的時候,以數字命名。

 dir = '../images/' + keyword + '_' + str(i) + '.jpg'
fp = open(dir, 'wb')
fp.write(pic.content)
fp.close()
i += 1

完整的程式碼

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

我們看到有的圖片沒顯示出來,開啟網址看,發現確實沒了。

圖片素材不夠?Python爬蟲來幫你啊,海量圖片一鍵入手

 

 

因為百度有些圖片它快取到百度的伺服器上,所以我們在百度上還能看見它,但它的實際連結已經失效了。

總結

enjoy 我們的第一個圖片下載爬蟲吧!當然它不僅能下載百度的圖片,依葫蘆畫瓢,你現在應該能做很多事情了,比如爬取頭像,爬淘寶展示圖等等。