在網路時代,人們已經習慣從圖庫、社群平台等各種網站下載圖片。如果只需要下載少量圖片,手動操作並不繁瑣。但是,如果需要下載大量圖片,手動操作將變得非常費時費力,這時就需要使用自動化技術來實現圖片的自動下載。
本文將介紹如何使用 Python 爬蟲技術,從網站上自動下載圖片到本機。這個過程分為兩步:第一步,使用 Python 的 requests 庫或 selenium 庫抓取網站上的圖片鏈接;第二步,根據獲取到的鏈接,透過 Python 的 urllib 或者 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 屬性的值提取出來。
另一種取得圖片連結的方式是使用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中文網其他相關文章!