国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于python下selenium庫實現(xiàn)交互式圖片保存操作(批量保存瀏覽器中的圖片)

這篇具有很好參考價值的文章主要介紹了基于python下selenium庫實現(xiàn)交互式圖片保存操作(批量保存瀏覽器中的圖片)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Selenium是最廣泛使用的開源Web UI(用戶界面)自動化測試套件之一,可以通過編程與瀏覽量的交互式操作對網(wǎng)頁進行自動化控制?;谶@種操作進行數(shù)據(jù)保存操作,尤其是在圖像數(shù)據(jù)的批量保存上占據(jù)優(yōu)勢。本博文基于selenium 與jupyterlab實現(xiàn)批量保存瀏覽器搜索到的圖片。

Selenium的詳細使用可以參考:https://blog.csdn.net/sinat_28631741/article/details/115634230

1、Selenium環(huán)境安裝

使用Selenium進行自動化操作要求電腦局部python環(huán)境,且安裝好了谷歌瀏覽器。

1.1 python包安裝

Selenium安裝命令為:

pip install selenium 

為了能進行交互式執(zhí)行代碼片段,建議安裝jupyter lab,安裝命令

pip install jupyterlab

安裝好后,在命令行下執(zhí)行‘jupyter lab’命令即可彈出瀏覽器界面,具體頁面如下所示

jupyter lab

在以下頁面中可以新建Notebook(由于執(zhí)行python代碼的的記事本)
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存
按照上圖,點擊Python 3即可進入交互式編程界面,具體如下所示(其中每一個單元格都可以輸入python代碼并執(zhí)行,點擊紅框中的三角形即可執(zhí)行鼠標(biāo)選擇的單元格代碼塊)。其中代碼快的上下文關(guān)系并無聯(lián)系,只是說執(zhí)行完當(dāng)前代碼快后默認跳轉(zhuǎn)到下一個代碼塊【可以自行指定執(zhí)行其他代碼塊】。代碼快之間的變量在其執(zhí)行后生效,執(zhí)行后會被添加到內(nèi)存空間,在下一個執(zhí)行的代碼快中可以使用先前所有的代碼塊變量和函數(shù)。
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存

1.2 谷歌驅(qū)動下載

先打開本機的谷歌瀏覽器,然后在地址欄輸入chrome://settings/help,即可進入瀏覽器的設(shè)置頁面,然后查看自己瀏覽器的版本信息。這里的版本是103.0(記住版本號的前兩位就行)
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存

打開https://registry.npmmirror.com/binary.html?path=chromedriver/
,下載與瀏覽器版本號最接近的驅(qū)動
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存
下載win32版本,然后將其解壓,將chromedriver.exe復(fù)制到C:\Windows\System32目錄即可(或者是系統(tǒng)環(huán)境變量path配置項中的其他路徑)
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存

2、 抓取瀏覽器圖片

2.1 控制開啟瀏覽器

在jupyter的交互式單元格內(nèi)輸入以下代碼,即可控制瀏覽器自動打開www.baidu.com

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser = webdriver.Chrome()
browser.get('https://image.baidu.com/')

2.2 交互式搜索圖片

在上述步驟中彈出的瀏覽器窗口中,按照個人爬蟲需求,輸入關(guān)鍵詞,并拖動頁面的滾動條,使頁面中的圖片變多(滿足需求就可,越后面的圖片與關(guān)鍵詞差距越大)
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存

2.3 執(zhí)行js進行轉(zhuǎn)換

利用代碼調(diào)用瀏覽器執(zhí)行js,將瀏覽器中頁面內(nèi)所有的img標(biāo)簽的src轉(zhuǎn)換為base64格式。因為直接根據(jù)url利用python下載圖片的時候有極大可能會被服務(wù)器拒絕下載,故此,利用js將現(xiàn)有的圖像信息已base64格式存儲到網(wǎng)站圖片的src中。

js = """
        _fetch = function(i,src){
          return fetch(src).then(function(response) {
            if(!response.ok) throw new Error("No image in the response");
            var headers = response.headers;
            var ct = headers.get('Content-Type');
            var contentType = 'image/png';
            if(ct !== null){
              contentType = ct.split(';')[0];
            }
            
            return response.blob().then(function(blob){
              return {
                'blob': blob,
                'mime': contentType,
                'i':i,
              };
            });
          });
        };
        
        _read = function(response){
          return new Promise(function(resolve, reject){
            var blob = new Blob([response.blob], {type : response.mime});
            var reader = new FileReader();
            reader.onload = function(e){
              resolve({'data':e.target.result, 'i':response.i});
            };
            reader.onerror = reject;
            reader.readAsDataURL(blob);
          });
        };
        
        _replace = function(){
            for (var i = 0, len = q.length; i < len; i++) {imgs[q[i].item].src = q[i].data;}
            alert('處理完成!');
        }
        
        var q = [];
        var imgs = document.querySelectorAll('img');
        for (var i = 0, len = imgs.length; i < len; i++) {
                _fetch(i,imgs[i].src).then(_read).then(function(data){
            q.push({
              'data': data.data,
              'item': data.i,
            });
          });
            }
        setTimeout(_replace, 2000 );
        """
browser.execute_script(js)

瀏覽器在執(zhí)行完python程序嵌入的js代碼后會彈出以下提示信息,這表示圖像轉(zhuǎn)base64操作完成。
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存

2.4 保存圖片

利用selenium獲取頁面中的節(jié)點元素,在https://image.baidu.com/中圖像的css選擇器路徑為’#imgid > div > ul > li’,遍歷所獲取的頁面元素,然后提取其中img元素的src屬性,將其轉(zhuǎn)換為img對象,然后使用opencv保存為圖像。
執(zhí)行以下代碼先創(chuàng)建一個image目錄,用于保存圖片


import base64
import numpy as np
import cv2

def base64img2file(imgname:str,imgsrc: str):
    #將base64轉(zhuǎn)碼為byte,然后再使用opencv轉(zhuǎn)image對象
    img_data = base64.b64decode(imgsrc.split(',')[1])
    nparr = np.fromstring(img_data, np.uint8)
    img_np = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    if img_np is not None:
        cv2.imwrite(imgname,img_np)
ul_list = browser.find_elements(By.CSS_SELECTOR, '#imgid > div > ul > li') #按CSS選擇器

for i,li in enumerate(ul_list):
    print(i,li)
    img=li.find_element(By.CSS_SELECTOR, 'img')
    base64str=img.get_attribute('src')
    imgname='image/%s.jpg'%i
    if base64str:
        base64img2file(imgname,base64str)

代碼執(zhí)行輸出如下所示

0 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="f00c796a-3d59-460a-bfed-94997944fabb")>
1 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="ae9a78b9-5669-471a-a0ce-45a508d3622c")>
2 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="f554c10e-e453-47bc-9dbd-12fdb1144062")>
3 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="53b02fca-6fbb-4d81-80e4-f090cd8d760e")>
4 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="a7de3396-8baf-4093-8437-1a93bf7f7386")>
5 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="7939e112-120a-45bd-9f78-c85715a8c9bf")>
6 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="f7613b97-cb6f-4bcb-b6cb-57150507abfd")>
7 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="708eb27b-111b-4fab-8f68-a921e9130364")>
8 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="8164377a-2622-41df-80ca-5466e397189d")>
9 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="2513db9c-6956-4d34-b04a-89de75731b77")>
10 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="335f191e-00f9-4277-9f91-37945f3c0763")>
11 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="d5d44624-da6b-45a8-9a82-e8d7edf469d9")>
12 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="ec03ce95-2024-4d7d-96e7-bc52c79fdf19")>
13 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="f42b5991-4be1-43a6-9f7e-9fe92c948b55")>
14 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="07c6763b-7ad1-4770-9693-112e5cc00f98")>
15 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="3a3e9861-0c94-4623-87c2-c0dcdda66852")>
16 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="439b495b-7d2a-41e6-ac94-d448691e0eb2")>
17 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="05fa5174-d970-4764-88c3-201846fb6cf0")>
18 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="caa591a7-ab7e-49ce-905e-fb515a22cf5c")>
19 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="89b635df-9585-4f95-8835-fb9848474cf2")>
20 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="a44b0003-23f2-4e2f-af51-036d4dec045f")>
21 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="e750ee5d-cd19-4267-8d7a-6a3a0e90d104")>
22 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="e1c49517-f4e9-44e4-bbf8-b6ab138bb908")>
23 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="2fc72e19-c35f-45b6-8a90-db6cccbe631c")>
24 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="baee9cf6-1b9c-4f50-9906-a8b8d1e10067")>
25 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="96917b71-7bfc-4e4f-bfff-6e5fb847d357")>
26 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="82d0cff5-5470-4ac4-a8c6-7ae1f897bda9")>
27 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="2d817ba8-af89-4242-a961-60b305d1149e")>
28 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="daad33b7-c3e7-4d03-8d74-274cd1a7ecc2")>
29 <selenium.webdriver.remote.webelement.WebElement (session="d8d43989c740105781072461d0af0f1f", element="ed281754-16e1-4c1d-97d4-d81b13909f3a")>

保存后的圖像如下所示:
selenium下載圖片,深度學(xué)習(xí)python庫使用,python,selenium,圖片保存文章來源地址http://www.zghlxwxcb.cn/news/detail-819700.html

到了這里,關(guān)于基于python下selenium庫實現(xiàn)交互式圖片保存操作(批量保存瀏覽器中的圖片)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【三維編輯】Seal-3D:基于NeRF的交互式像素級編輯

    【三維編輯】Seal-3D:基于NeRF的交互式像素級編輯

    項目主頁 : https://windingwind.github.io/seal-3d/ 代碼 :https://github.com/windingwind/seal-3d/ 論文 : https://arxiv.org/pdf/2307.15131 隨著隱式神經(jīng)表征(即NeRF)的流行,迫切需要編輯方法與隱式3D模型交互,如后處理重建場景和3D內(nèi)容創(chuàng)建。 之前的工作在編輯的靈活性、質(zhì)量和速度方面 都受到了

    2024年02月13日
    瀏覽(27)
  • 如何用python做交互式界面?五分鐘教會你。

    如何用python做交互式界面?五分鐘教會你。

    之前寫了一個用Python制作的登陸界面的文章,這次教大家實現(xiàn)一個簡單的注冊界面,跟登陸相比,注冊界面新增了一個上傳頭像的功能,以及將注冊信息保存到本地txt文件中的功能,最終實現(xiàn)的效果是這樣的 ? 在導(dǎo)入必要的庫之后,我們先創(chuàng)建一個寬度為350,高度為220的窗口

    2024年02月05日
    瀏覽(24)
  • 【論文解讀】基于神經(jīng)輻射場NeRF的像素級交互式編輯(Seal-3D)

    【論文解讀】基于神經(jīng)輻射場NeRF的像素級交互式編輯(Seal-3D)

    來源:投稿 作者:橡皮 編輯:學(xué)姐 論文鏈接:https://arxiv.org/pdf/2307.15131 項目主頁:https://windingwind.github.io/seal-3d/ 隨著隱式神經(jīng)表征或神經(jīng)輻射場(NeRF)的普及,人們迫切需要與隱式三維模型交互的編輯方法,以完成重建場景的后期處理和三維內(nèi)容創(chuàng)建等任務(wù)。雖然以前的作

    2024年02月03日
    瀏覽(24)
  • Python+turtle交互式繪圖:可以用鼠標(biāo)拖動的小海龜

    Python+turtle交互式繪圖:可以用鼠標(biāo)拖動的小海龜

    功能描述:代碼運行后,在窗口上顯示3個小海龜,使用鼠標(biāo)拖動小海龜時可以動態(tài)改變窗口顏色,如下圖所示。 說明:本例代碼主體部分來自turtle Demo,我稍微修改了一下,重點增加了注釋,方便閱讀和理解。 參考代碼: ----------相關(guān)閱讀---------- 教學(xué)課件 1900頁Python系列P

    2023年04月08日
    瀏覽(25)
  • 從ChatGPT到ChatCAD:基于大型語言模型的醫(yī)學(xué)圖像交互式計算機輔助診斷

    從ChatGPT到ChatCAD:基于大型語言模型的醫(yī)學(xué)圖像交互式計算機輔助診斷

    1. ? 標(biāo)題: ChatCAD: Interactive Computer-Aided Diagnosis on Medical Image using Large Language Models. 2. ? 期刊: arXiv 3. IF/JCR/分區(qū): 無 4. DOI: arXiv:2302.07257 5. 作者: 沈定剛教授團隊 2023年年初最火熱的話題之一就是OpenAI的ChatGPT1,給人類帶來了巨大的沖擊。1月底,美國《財富》雜志2/3月合刊的

    2023年04月14日
    瀏覽(18)
  • Java手動編碼實現(xiàn)與k8s交互式shell

    Java手動編碼實現(xiàn)與k8s交互式shell

    要手動編碼,和k8s做shell交互,我們需要弄清以下兩個問題: 1、Java如何與k8s做shell交互 2、前端界面如何與Java后臺交互 3、多個用戶并發(fā)訪問如何實現(xiàn) 問題1: k8s官方提供了各種語言的KubernetesAPI,對于Java語言來說,采用KubernetesClient即可實現(xiàn)執(zhí)行shell命令。 需要pod的容器的基

    2024年02月16日
    瀏覽(18)
  • OpenCV-Python中的圖像處理-GrabCut算法交互式前景提取

    OpenCV-Python中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設(shè)置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月12日
    瀏覽(20)
  • Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設(shè)置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月13日
    瀏覽(104)
  • 計算機視覺與圖形學(xué)-神經(jīng)渲染專題-Seal-3D(基于NeRF的像素級交互式編輯)

    計算機視覺與圖形學(xué)-神經(jīng)渲染專題-Seal-3D(基于NeRF的像素級交互式編輯)

    摘要 隨著隱式神經(jīng)表示或神經(jīng)輻射場 (NeRF) 的流行,迫切需要與隱式 3D 模型交互的編輯方法,以完成后處理重建場景和 3D 內(nèi)容創(chuàng)建等任務(wù)。雖然之前的作品從不同角度探索了 NeRF 編輯,但它們在編輯靈活性、質(zhì)量和速度方面受到限制,無法提供直接的編輯響應(yīng)和即時預(yù)覽。

    2024年02月13日
    瀏覽(21)
  • 交互式筆記Jupyter Notebook本地部署并實現(xiàn)公網(wǎng)遠程訪問內(nèi)網(wǎng)服務(wù)器

    交互式筆記Jupyter Notebook本地部署并實現(xiàn)公網(wǎng)遠程訪問內(nèi)網(wǎng)服務(wù)器

    最近,我發(fā)現(xiàn)了一個超級強大的人工智能學(xué)習(xí)網(wǎng)站。它以通俗易懂的方式呈現(xiàn)復(fù)雜的概念,而且內(nèi)容風(fēng)趣幽默。我覺得它對大家可能會有所幫助,所以我在此分享。點擊這里跳轉(zhuǎn)到網(wǎng)站。 1.前言 在數(shù)據(jù)分析工作中,使用最多的無疑就是各種函數(shù)、圖表、代碼和說明文檔,這些

    2024年02月04日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包