Python使用Selenium批量自動化獲取并下載圖片的方法
Selenium批量自動化獲取并下載圖片
在現(xiàn)代的Web開發(fā)中,自動化測試和數(shù)據(jù)抓取已經(jīng)成為不可或缺的一部分。Selenium作為一款強(qiáng)大的自動化測試工具,不僅可以用于測試Web應(yīng)用,還可以用于批量獲取網(wǎng)頁上的圖片。本文將介紹如何使用Selenium批量自動化獲取并下載圖片。
一、準(zhǔn)備工作
安裝Selenium:首先,你需要在你的系統(tǒng)中安裝Selenium。你可以使用pip來安裝:
pip install selenium
下載WebDriver:Selenium需要與WebDriver配合使用,WebDriver是一個瀏覽器驅(qū)動,用于執(zhí)行瀏覽器操作。你需要根據(jù)你的瀏覽器類型下載對應(yīng)的WebDriver。例如,如果你使用的是Chrome,你需要下載ChromeDriver。
導(dǎo)入必要的庫:在Python腳本中,你需要導(dǎo)入Selenium的庫以及用于處理圖片的庫(如PIL)。
from selenium import webdriver from PIL import Image import io
二、編寫代碼
啟動瀏覽器驅(qū)動:創(chuàng)建一個瀏覽器驅(qū)動實例,并打開一個網(wǎng)頁。這里以Chrome為例:
driver = webdriver.Chrome('path/to/chromedriver')
driver.get('http://example.com')
查找圖片元素:使用Selenium的定位 器(locators)來查找頁面上的圖片元素。你可以使用CSS選擇器、XPath等來定位圖片元素。例如,使用CSS選擇器定位所有的img標(biāo)簽:
images = driver.find_elements_by_css_selector('img')
下載圖片:對于每個找到的圖片元素,提取其src屬性,然后使用PIL庫下載圖片。這里是一個簡單的示例:
for image in images:
image_url = image.get_attribute('src')
response = driver.execute_script("return fetch('" + image_url + "');")
image_data = response.content
image = Image.open(io.BytesIO(image_data))
image.save(image_url.split('/')[-1]) # 將圖片保存到本地,文件名保持不變
關(guān)閉瀏覽器驅(qū)動:完成圖片下載后,關(guān)閉瀏覽器驅(qū)動。
driver.quit()
三、注意事項
跨域問題:如果圖片來自于不同的域,你可能會遇到跨域問題。在這種情況下,你需要處理瀏覽器的同源策略限制。一種解決方法是使用瀏覽器插件或服務(wù)來允許跨域請求。
圖片大小和分辨率:在下載圖片時,你可能需要調(diào)整圖片的大小和分辨率以滿足你的需求。你可以在保存圖片時使用PIL庫的resize方法來調(diào)整圖片大小。例如:image.resize((width, height))。
完整例子:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import requests
from io import BytesIO
from PIL import Image
def spider(url):
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window() # 窗口最大化
time.sleep(30)
a=1
for j in range(2,25):
try:
try:
for i in range(1,100):
a+=1
image_url=driver.find_element(By.XPATH,'//*[@id="sobey_editor_content"]/p/img[{}]'.format(i)).get_attribute("src")
print(image_url)
#//*[@id="root"]/div/div/div/div[1]/div/div[2]/div/div[3]/div/div/div/div[4]
#//*[@id="root"]/div/div/div/div[1]/div/div[2]/div/div[3]/div/div/div/div[23]
response = requests.get(image_url)
image_data = BytesIO(response.content)
image = Image.open(image_data)
image.save("image/{}.jpg".format(a))
print("{}下載成功".format(a))
except:
print("已下載完")
driver.find_element(By.XPATH,'//*[@id="root"]/div/div/div/div[1]/div/div[2]/div/div[3]/div/div/div/div[{}]'.format(j+1)).click()
time.sleep(0.5)
except:
print("未能下載。")
pass
driver.quit()
quit()
if __name__ == '__main__':
spider('https://yunquer.cn/web/#/Previewtextbook?contentId_=e8e86045f7a441e5828da5c3b21bcacc&uip=1')
到此這篇關(guān)于Python使用Selenium批量自動化獲取并下載圖片的方法的文章就介紹到這了,更多相關(guān)Python Selenium獲取并下載圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python統(tǒng)計字符串中指定字符出現(xiàn)次數(shù)的方法
這篇文章主要介紹了python統(tǒng)計字符串中指定字符出現(xiàn)次數(shù)的方法,涉及Python中count函數(shù)的使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
Python使用multiprocessing如何實現(xiàn)多進(jìn)程
這篇文章主要介紹了Python使用multiprocessing如何實現(xiàn)多進(jìn)程問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
python虛擬環(huán)境多種創(chuàng)建方式圖文詳解
創(chuàng)建虛擬環(huán)境是為了讓項目運(yùn)行在一個獨立的局部的Python環(huán)境中,使得不同環(huán)境的項目互不干擾,這篇文章主要給大家介紹了關(guān)于python虛擬環(huán)境多種創(chuàng)建方式的相關(guān)資料,需要的朋友可以參考下2024-08-08
python 創(chuàng)建一個空dataframe 然后添加行數(shù)據(jù)的實例
今天小編就為大家分享一篇python 創(chuàng)建一個空dataframe 然后添加行數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python機(jī)器學(xué)習(xí)應(yīng)用之支持向量機(jī)的分類預(yù)測篇
最近完成的一個項目用到了SVM,之前也一直有聽說支持向量機(jī),知道它是機(jī)器學(xué)習(xí)中一種非常厲害的算法。利用將近一個星期的時間學(xué)習(xí)了一下支持向量機(jī),把原理推了一遍,感覺支持向量機(jī)確實挺厲害的,這篇文章帶你了解它2022-01-01
使用Python實現(xiàn)網(wǎng)頁表格轉(zhuǎn)換為markdown
在日常工作中,我們經(jīng)常需要從網(wǎng)頁上復(fù)制表格數(shù)據(jù),并將其轉(zhuǎn)換成Markdown格式,本文將使用Python編寫一個網(wǎng)頁表格轉(zhuǎn)Markdown工具,需要的可以參考下2025-05-05
解決pycharm py文件運(yùn)行后停止按鈕變成了灰色的問題
今天小編就為大家分享一篇解決pycharm py文件運(yùn)行后停止按鈕變成了灰色的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11

