Python使用Selenium批量自動化獲取并下載圖片的方法
Selenium批量自動化獲取并下載圖片
在現(xiàn)代的Web開發(fā)中,自動化測試和數(shù)據(jù)抓取已經(jīng)成為不可或缺的一部分。Selenium作為一款強大的自動化測試工具,不僅可以用于測試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)文章
pytorch:實現(xiàn)簡單的GAN示例(MNIST數(shù)據(jù)集)
今天小編就為大家分享一篇pytorch:實現(xiàn)簡單的GAN示例(MNIST數(shù)據(jù)集),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01詳解vscode實現(xiàn)遠(yuǎn)程linux服務(wù)器上Python開發(fā)
這篇文章主要介紹了vscode實現(xiàn)遠(yuǎn)程linux服務(wù)器上Python開發(fā),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11利用Python+PyQt5實現(xiàn)簡易瀏覽器的實戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于如何利用Python+PyQt5實現(xiàn)簡易瀏覽器的相關(guān)資料,Qt 的主要優(yōu)勢是可以開發(fā)跨平臺的圖形界面程序,基于 Qt 的應(yīng)用能夠借助于各平臺的原生性在不同類的設(shè)備上運行,而無須修改任何代碼庫,需要的朋友可以參考下2021-07-07