用python爬取圖片


聲明:全過程沒有任何違法操作

背景

這周閑的無聊,到某個不用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文件),最后利用循環就能設計出批量爬取圖片的程序了,下面我就放一張自己設計的程序運行圖片

至於本人欣賞什么類型的圖片,大伙兒就不用知道了


免責聲明!

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



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