首頁  >  文章  >  後端開發  >  爬取網站上的圖片,並自動下載到本地

爬取網站上的圖片,並自動下載到本地

WBOY
WBOY原創
2023-06-13 13:28:503246瀏覽

在網路時代,人們已經習慣從圖庫、社群平台等各種網站下載圖片。如果只需要下載少量圖片,手動操作並不繁瑣。但是,如果需要下載大量圖片,手動操作將變得非常費時費力,這時就需要使用自動化技術來實現圖片的自動下載。

本文將介紹如何使用 Python 爬蟲技術,從網站上自動下載圖片到本機。這個過程分為兩步:第一步,使用 Python 的 requests 庫或 selenium 庫抓取網站上的圖片鏈接;第二步,根據獲取到的鏈接,透過 Python 的 urllib 或者 requests 庫將圖片下載到本地。

第一步:取得圖片連結

  1. 使用requests 庫爬取連結

先來看看使用requests 庫爬取圖片連結的方法。範例程式碼如下:

import requests
from bs4 import BeautifulSoup

url = 'http://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

img_tags = soup.find_all('img')

urls = [img['src'] for img in img_tags]

這裡以 Example 網站為例,先使用 requests 函式庫爬取網頁內容,並使用 BeautifulSoup 函式庫解析 HTML。然後,我們使用 soup.find_all('img') 方法來取得 HTML 中所有的 img 標籤,並使用清單解析式將每個標籤中的 src 屬性的值提取出來。

  1. 使用selenium 庫爬取連結

另一種取得圖片連結的方式是使用selenium 函式庫,範例程式碼如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from time import sleep

url = 'http://example.com'

options = Options()
options.add_argument('--headless')

service = Service('/path/to/chromedriver')
driver = webdriver.Chrome(service=service, options=options)
driver.get(url)

sleep(2)

img_tags = driver.find_elements_by_tag_name('img')

urls = [img.get_attribute('src') for img in img_tags]

這裡我們使用了ChromeDriver,使用時需要先將自己電腦上的ChromeDriver 的路徑填入到範例程式碼中的'path/to/chromedriver' 處。第二行程式碼啟用無頭瀏覽器,避免在 Chrome 瀏覽器視窗中進行操作,提高運行速度。然後我們使用 selenium 庫中的 webdriver 模組建立了一個 Chrome 瀏覽器的實例,透過設定 driver.get(url) 來開啟 Example 網站。然後使用 driver.find_elements_by_tag_name('img') 取得到所有的 img 標籤,進而取得每個標籤中的 src 屬性的值。

第二步:下載圖片

下載圖片的方式有很多種,這裡我們使用 Python 內建的 urllib 函式庫或 requests 函式庫來下載。範例程式碼如下:

import urllib.request

for url in urls:
    filename = url.split('/')[-1]
    urllib.request.urlretrieve(url, filename)

這裡使用urllib.request 函式庫將圖片從網路上下載到本機,使用url.split('/')[-1] 來取得圖片的文件名,並將其賦值給變數filename,最後使用urllib.request.urlretrieve(url, filename) 將圖片下載到本機。要注意的是,如果 url 中包含中文,還需要對 url 進行程式設計處理。

這裡再簡單介紹一下使用 requests 庫下載圖片的方法,範例程式碼如下:

import requests

for url in urls:
    filename = url.split('/')[-1]
    response = requests.get(url)
    with open(filename, 'wb') as f:
        f.write(response.content)

這裡使用 requests 函式庫取得圖片二進位文件,將其寫入檔案。需要注意的是,由於二進位檔案寫入模式為'wb',需要使用with open(filename, 'wb') as f: 的方式來開啟檔案並寫入,確保每個文件都正確關閉。

總結

綜上所述,透過 Python 爬蟲技術,我們能夠非常輕鬆地爬取網站上的圖片,並將其自動下載到本機。這種自動化技術能夠幫助我們提高工作效率,對於需要處理大量圖片的工作非常有幫助。同時,需要提醒的是,爬取網站上的圖片需要遵守相關法規,並尊重網站的版權。如果沒有得到網站官方的授權或許可,不要未經允許擅自爬取網站上的圖片。

以上是爬取網站上的圖片,並自動下載到本地的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn