聲明:全過程沒有任何違法操作
背景
這周閑的無聊,到某個不用FQ就能上P站的網站上欣賞圖片,但是光欣賞也不夠,我得下載下來慢慢欣賞,於是便寫了個爬蟲(批量)下載圖片(因為在這個網站上下載需要一張一張下載,麻煩)。
分析
下載單張圖片
首先打開我想要下載的作品集的網頁,然后F12尋找我需要的目標文件,然后再爬蟲上運行一下看看狀態是什么
import requests
url = 'https://pixiv-image.pwp.link/img-original/img/2018/12/08/03/57/33/72014282_p0.jpg'
headers = {
'Origin': 'https://pixiviz.pwp.app',
'Referer': 'https://pixiviz.pwp.app/pic/72014282',
'Sec-Fetch-Dest': 'empty',
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Mobile Safari/537.36'
}
response = requests.get(url, headers=headers)
print(response)
結果顯示是200,說明可以下載
下載可以使用如下代碼
filename = str('圖片')+".png"
with open(filename,"wb") as code:
code.write(response.content)
print('文件下載成功!')
如圖,圖片下載成功
注意:這個下載的文件的請求頭必須寫完整,否則圖片是無法爬取到的
批量下載
其實批量下載有多種方法,我只講一種,還有一種我會在最后說思路
在我們所要爬取的網頁中的作品集一共有15張圖片,於是我們可以嘗試吧url中的"p0"中的數字進行修改然后再看看效果
圖片會更改,於是我們可以設計一個循環來實現圖片批量爬取,設計如下
import requests
import time
i = 0
while i < 15:
url = 'https://pixiv-image.pwp.link/img-original/img/2018/12/08/03/57/33/72014282_p{}.jpg'.format(i)
headers = {
'Origin': 'https://pixiviz.pwp.app',
'Referer': 'https://pixiviz.pwp.app/pic/72014282',
'Sec-Fetch-Dest': 'empty',
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Mobile Safari/537.36'
}
response = requests.get(url, headers=headers)
filename = str('圖片{}'.format(i))+".png"
with open(filename,"wb") as code:
code.write(response.content)
print('圖片{}下載成功!'.format(i))
i += 1
time.sleep(0.5)
這里的time.sleep是用來減慢爬取速度,防止網站識別爬蟲而禁ip訪問
上圖是第15張圖片
這是我們爬到的第15張圖片
於是這樣我們就實現了圖片的批量爬取
批量下載的另種設計思路
在這個網站(網站url我不會給出)上可以進入畫師主頁,然后F12可以尋找到對應的作品集文件,然后發送請求返回文件中的數據(json文件),最后利用循環就能設計出批量爬取圖片的程序了,下面我就放一張自己設計的程序運行圖片
至於本人欣賞什么類型的圖片,大伙兒就不用知道了