新聞中心
什么是網(wǎng)頁圖片?
網(wǎng)頁圖片,顧名思義,就是存儲在網(wǎng)頁服務(wù)器上的圖片文件,這些圖片可以用于裝飾網(wǎng)頁,提高用戶體驗,也可以用于傳遞信息,在Python中,我們可以通過多種方法獲取網(wǎng)頁上的圖片。

成都創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為海北州企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都做網(wǎng)站,海北州網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
如何使用Python獲取網(wǎng)頁圖片?
1、使用requests庫和BeautifulSoup庫
我們需要安裝requests庫和BeautifulSoup庫,可以使用以下命令進(jìn)行安裝:
pip install requests pip install beautifulsoup4
接下來,我們可以使用requests庫獲取網(wǎng)頁內(nèi)容,然后使用BeautifulSoup庫解析HTML,最后通過查找img標(biāo)簽的src屬性獲取圖片鏈接。
import requests
from bs4 import BeautifulSoup
url = 'https://www.example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
for img in img_tags:
img_url = img['src']
print(img_url)
2、使用Scrapy框架
Scrapy是一個強(qiáng)大的網(wǎng)絡(luò)爬蟲框架,可以用來抓取網(wǎng)頁數(shù)據(jù),我們需要安裝Scrapy庫:
pip install scrapy
接下來,我們可以創(chuàng)建一個Scrapy項目,并編寫爬蟲代碼,在爬蟲中,我們可以通過XPath或CSS選擇器定位到img標(biāo)簽,并提取圖片鏈接。
3、使用Selenium庫
Selenium是一個自動化測試工具,也可以用來爬取網(wǎng)頁數(shù)據(jù),與requests庫相比,Selenium可以模擬用戶操作,如點(diǎn)擊按鈕、滾動頁面等,這樣,我們可以獲取動態(tài)加載的圖片,我們需要安裝Selenium庫:
pip install selenium
接下來,我們需要下載瀏覽器驅(qū)動程序(如ChromeDriver),并將其添加到系統(tǒng)路徑中,我們可以使用Selenium庫打開網(wǎng)頁,定位到img標(biāo)簽,并獲取圖片鏈接,Selenium相對較慢,因為它需要加載整個網(wǎng)頁,它通常不適用于抓取大量圖片。
如何保存獲取到的圖片?
我們可以使用PIL庫(Python Imaging Library)或OpenCV庫將獲取到的圖片保存到本地,我們需要安裝PIL庫或OpenCV庫:
pip install pillow opencv-python
接下來,我們可以使用以下代碼將圖片保存到本地:
from PIL import Image
import requests
from io import BytesIO
from bs4 import BeautifulSoup
import cv2 as cv2
import numpy as np
from urllib.parse import urljoin
from pathlib import Path
import os
url = 'https://www.example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
save_path = 'images' 設(shè)置圖片保存路徑
os.makedirs(save_path, exist_ok=True) 如果目錄不存在,則創(chuàng)建目錄
for img in img_tags:
img_url = img['src'] 獲取圖片鏈接
img_name = os.path.basename(img_url) 獲取圖片文件名(不包括擴(kuò)展名)
img_data = requests.get(img_url).content 獲取圖片數(shù)據(jù)
img_np = np.array(Image.open(BytesIO(img_data))) 將圖片數(shù)據(jù)轉(zhuǎn)換為NumPy數(shù)組
img_np = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB) 將圖片從BGR格式轉(zhuǎn)換為RGB格式(可選)
Path(save_path, img_name).save(f'{save_path}/{img_name}') 將圖片保存到指定路徑(可選)
相關(guān)問題與解答
1、如何處理跨域請求?
答:如果網(wǎng)站使用了CORS(跨域資源共享)策略,我們可以直接使用requests庫獲取圖片;否則,我們需要在目標(biāo)網(wǎng)站上設(shè)置允許跨域請求,我們還可以使用代理IP繞過地域限制,具體方法如下:
網(wǎng)站題目:python怎么獲取網(wǎng)頁圖片
轉(zhuǎn)載源于:http://fisionsoft.com.cn/article/dhghshc.html


咨詢
建站咨詢
