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

selenium進(jìn)行網(wǎng)頁長截圖,模塊長截圖

這篇具有很好參考價值的文章主要介紹了selenium進(jìn)行網(wǎng)頁長截圖,模塊長截圖。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用selenium進(jìn)行網(wǎng)頁截圖,本文使用方法皆為顯式情境下調(diào)試,未涉及隱式(無界面)與協(xié)議(設(shè)備模擬)。

首先定義驅(qū)動driver

from selenium import webdriver
driver = webdriver.Chrome()
#可指定目標(biāo)頁面網(wǎng)址,不指定頁面默認(rèn)為空白頁
#url1='???'
#driver.get(url1)

拼接圖片涉及

from PIL import Image

import numpy as np

一、基本操作

首先是最基礎(chǔ)的截圖,界面截圖與某一部件截圖

#部件截圖
driver.find_element_by_id('captchaimg').screenshot('C:/xxxx/xx.png')
#屏幕截圖
driver.get_screenshot_as_file('C:/xxxx/xx.png')

二、整頁截圖

以上方法只能截取當(dāng)前頁面的圖片,那么當(dāng)網(wǎng)頁長度超出屏幕長度時呢?(即需要滾動)

2.1截取再拼接

        window_height = self.driver.execute_script("return window.screen.height")   #屏幕高度
        self.driver.set_window_size(650, window_height)  #設(shè)置瀏覽器寬高
        time.sleep(1)
        page_height = self.driver.execute_script('return document.documentElement.scrollHeight')  # 頁面高度
        print(window_height, page_height)
        n1 = page_height// window_height
        if n1 == 0:       #判斷是否需要滾動
            self.driver.get_screenshot_as_file(r'{}\{}.png'.format(self.path_last,Account_number ))    #指定截圖保存位置
        else:
            self.driver.set_window_size(650, window_height)
            for j in range(n1+1):
                self.driver.execute_script("window.scrollBy(0,{})".format(j*window_height))
                time.sleep(0.5)
                #driver.find_element(By.ID,'frmRecPODetail').screenshot(r'.png'.format(i))    #只截取部分
                self.driver.get_screenshot_as_file(r'{}\{}.png'.format(self.path_mid, j))  # 截屏

        #拼圖時間到
        target_img=os.listdir(self.path_mid)
        base_mat = np.atleast_2d(Image.open(os.path.join(self.path_mid,target_img[0])))
        for i in target_img[1:]:
            mat = np.atleast_2d(Image.open(os.path.join(self.path_mid,i)))  # 打開截圖并轉(zhuǎn)為二維矩陣
            base_mat = np.append(base_mat, mat, axis=0)  # 拼接圖片的二維矩陣
        Image.fromarray(base_mat).save(os.path.join(self.path_last,'{}.png'.format(Account_number)))

2.2利用javascript進(jìn)行打印截圖

        # 打開谷歌瀏覽器
        chrome_options = webdriver.ChromeOptions()
        settings = {
            "recentDestinations": [{
                "id": "Save as PDF",
                "origin": "local",
                "account": ""
            }],
            "selectedDestinationId": "Save as PDF",
            "version": 2,  # 另存為pdf,1 是默認(rèn)打印機
            "isHeaderFooterEnabled": True,  # 是否勾選頁眉和頁腳

            # "customMargins": {},
            # "marginsType": 2,#邊距(2是最小值、0是默認(rèn))
            # "scaling": 100,
            # "scalingType": 3,
            # "scalingTypePdf": 3,
            # "isLandscapeEnabled": True,  # 若不設(shè)置該參數(shù),默認(rèn)值為縱向
            "isCssBackgroundEnabled": True,
            "mediaSize": {
                "height_microns": 297000,
                "name": "ISO_A4",
                "width_microns": 210000,
                "custom_display_name": "A4"
            },
        }
        chrome_options.add_argument('--enable-print-browser')
        # chrome_options.add_argument('--headless') #headless模式下,瀏覽器窗口不可見,應(yīng)當(dāng)可提高效率
        prefs = {
            'printing.print_preview_sticky_settings.appState': json.dumps(settings),
            'savefile.default_directory': r'{}'.format(self.path_last)  # 此處填寫你希望文件保存的路徑,可填寫your file path默認(rèn)下載地址
        }

        chrome_options.add_argument('--kiosk-printing')  # 靜默打印,無需用戶點擊打印頁面的確定按鈕
        chrome_options.add_experimental_option('prefs', prefs)

        self.driver = webdriver.Chrome(chrome_options=chrome_options,executable_path=self.path_dri)

self.driver.execute_script(
            'document.title="{}.pdf";window.print();'.format(Account_number))  # 利用js修改網(wǎng)頁的title,該title最終就是PDF文件名,利用js的window.print可以快速調(diào)出瀏覽器打印窗口,避免使用熱鍵ctrl+P

三、某部件長截圖

在網(wǎng)頁中,或許存在某一部件,該部件采取滾動條的形式(即需要滾動該部件進(jìn)行截屏)

同理,使用單位置截屏滾動再拼接的方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-511511.html

        tabe = self.driver.find_element_by_xpath('sdasd')
        tr0 = tabe.find_elements_by_xpath('tbody')[0]  #找到位置
#我這里是有多行tr,故統(tǒng)計tr數(shù)量
        tr0 = tr0.find_elements_by_xpath('tr')
        
        self.driver.set_window_size(1350,650)  #調(diào)整瀏覽器尺寸,也可以直接打印部件

        n1 = (len(tr0)-1)//5   #5是我同窗可顯示數(shù)目
        if n1==0:         #展示數(shù)量小于5,無需滾動
            self.pic += 1
            self.driver.execute_script('document.documentElement.scrollTop=10000')
            self.driver.get_screenshot_as_file(r'{}\{}.png'.format(self.path1,'0'))
        else:
            for i in range(n1+1):
                
                self.driver.execute_script("arguments[0].scrollIntoView(false)",tr0[i*5])
                self.driver.execute_script('document.documentElement.scrollTop=10000')
            #     driver.find_element(By.ID,'frmRecPODetail').screenshot(r'C:\xx\{}.png'.format(i))    #只截取部分
                self.driver.get_screenshot_as_file(r'{}\{}.png'.format(self.path1,i))  # 截屏
                self.pic+=1
            else: 
                
                if  (len(tr0)-1)%5!=0:
                    self.driver.execute_script("arguments[0].scrollIntoView(false)",tr0[i*5+(len(tr0)-1)%5])
                    self.driver.execute_script('document.documentElement.scrollTop=10000')    # 將頁面滾動到底部
            #         driver.find_element(By.ID,'frmRecPODetail').screenshot(r'C:\xx\{}.png'.format(i+1))
                    self.driver.get_screenshot_as_file(r'{}\{}.png'.format(self.path1,i+1))  # 截屏
                    self.pic += 1
                    
                else:
                    self.driver.execute_script('document.documentElement.scrollTop=10000')    # 將頁面滾動到底部
                    self.driver.get_screenshot_as_file(r'{}\{}.png'.format(self.path1,i))  # 截屏,替換最后一張

#若需要拼接,需要注意第一張圖片在循環(huán)之外打開(以它為底)
#拼接部分
            # target_img=os.listdir(self.path3)
            # base_mat = np.atleast_2d(Image.open(os.path.join(self.path3,target_img[0])))
            # for i in target_img[1:]:
            #     mat = np.atleast_2d(Image.open(os.path.join(self.path3,i)))  # 打開截圖并轉(zhuǎn)為二維矩陣
            #     base_mat = np.append(base_mat, mat, axis=0)  # 拼接圖片的二維矩陣
            # Image.fromarray(base_mat).save(os.path.join(self.path1,'521.png'))

到了這里,關(guān)于selenium進(jìn)行網(wǎng)頁長截圖,模塊長截圖的文章就介紹完了。如果您還想了解更多內(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • 如何使用Python的Selenium庫進(jìn)行網(wǎng)頁抓取和JSON解析

    如何使用Python的Selenium庫進(jìn)行網(wǎng)頁抓取和JSON解析

    隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)頁抓取和數(shù)據(jù)解析在許多行業(yè)中變得越來越重要。無論是電子商務(wù)、金融、社交媒體還是市場調(diào)研,都需要從網(wǎng)頁中獲取數(shù)據(jù)并進(jìn)行分析。Python的Selenium庫作為一種自動化測試工具,已經(jīng)成為許多開發(fā)者的首選,因為它提供了強大的功能和靈活性。

    2024年02月10日
    瀏覽(150)
  • 如何使用Python自動化測試工具Selenium進(jìn)行網(wǎng)頁自動化?

    如何使用Python自動化測試工具Selenium進(jìn)行網(wǎng)頁自動化?

    Selenium 是一個流行的Web自動化測試框架, 它支持多種編程語言和瀏覽器,并提供了豐富的API和工具來模擬用戶在瀏覽器中的行為 。 Selenium可以通過代碼驅(qū)動瀏覽器自動化測試流程,包括頁面導(dǎo)航、元素查找、數(shù)據(jù)填充、點擊操作等。 與PyAutoGUI和AutoIt相比, Selenium更適合于處

    2023年04月09日
    瀏覽(111)
  • selenium爬取網(wǎng)頁內(nèi)容,對網(wǎng)頁內(nèi)容進(jìn)行點擊

    selenium爬取網(wǎng)頁內(nèi)容,對網(wǎng)頁內(nèi)容進(jìn)行點擊

    所需要的庫 首先明確所要爬取的網(wǎng)頁,選擇調(diào)用方法,增加無界面模式的無頭參數(shù),然后調(diào)用,獲取網(wǎng)址,使頁面放大,為最大化窗口 獲取數(shù)據(jù)運用XPATH函數(shù),將獲取的數(shù)據(jù)作為item,運用XPATH函數(shù)獲取, ? 模仿人點擊下一頁,運用 for語句,每10個一點,停留5秒 同樣尋找下一

    2024年01月17日
    瀏覽(27)
  • 【selenium模塊-WEB自動化】八大網(wǎng)頁元素定位方法(三)

    【selenium模塊-WEB自動化】八大網(wǎng)頁元素定位方法(三)

    一、id 定位 標(biāo)簽的 id 具有唯一性,就像人的身份證。 二、name 定位 name 指定標(biāo)簽的名稱,在頁面中可以不唯一。 三、class 定位 class 指定標(biāo)簽的類名,在頁面中可以不唯一。 四、tag 定位 每個 tag 往往用來定義一類功能,所以通過 tag 來識別某個元素的成功率很低,每個頁面

    2024年02月15日
    瀏覽(23)
  • 20230908_python練習(xí)_selenium模塊爬取網(wǎng)頁小說練習(xí)

    20230908_python練習(xí)_selenium模塊爬取網(wǎng)頁小說練習(xí)

    霍比特人小說爬取,使用 selenium 模塊調(diào)用谷歌瀏覽器,無界面模式爬取小說網(wǎng)站信息,將數(shù)據(jù)按照每次2000字符在mysql中保存。

    2024年02月07日
    瀏覽(30)
  • selenium利用javascript進(jìn)行自動打印網(wǎng)頁為PDF

    selenium爬取頁面的時候有時需要保持頁面為PDF格式 并且不能使用pdfkit 模塊(有的網(wǎng)址限制必須瀏覽器打開) 一:導(dǎo)入模塊 二:在初始化driver對象的時候設(shè)定,瀏覽器靜默保存(即保存時不彈出另存為按鈕)和默認(rèn)保存位置 三:打開所需網(wǎng)頁 四:調(diào)用js打開打印窗口 修改當(dāng)前頁面標(biāo)題(因

    2024年02月15日
    瀏覽(76)
  • Linux中使用selenium截圖的文字變?yōu)榉娇虻慕鉀Q方案

    Linux中使用selenium截圖的文字變?yōu)榉娇虻慕鉀Q方案

    最近在Linux中使用selenium截圖時,發(fā)現(xiàn)文字都變?yōu)榱朔娇颍?雖然不影響selenium的使用,但有點影響調(diào)試,也不好看,后面發(fā)現(xiàn)是因為Linux缺少中文字體的緣故,需要安裝中文字體就能解決。 先檢查 /usr/share 目錄下是否有有 fonts 和 fontconfig 目錄,如果沒有則需要執(zhí)行下面的命令

    2024年02月08日
    瀏覽(19)
  • JAVA使用selenium實現(xiàn)后臺瀏覽器截圖(含代碼+docker打包)

    JAVA使用selenium實現(xiàn)后臺瀏覽器截圖(含代碼+docker打包)

    最近接到一個特殊需求,需要每天定時截圖某網(wǎng)站首頁,保存?zhèn)洳?,因此使用JAVA實現(xiàn)了后臺截圖。 下面是完整的方法。 JAVA實現(xiàn)瀏覽器截圖,瀏覽器選用的是chrome,使用selenium-java依賴。selenium可以幫助我們調(diào)用瀏覽器,完成想要的功能。 由于是后臺截圖,不需要顯示界面,

    2024年03月13日
    瀏覽(25)
  • vue-element使用html2canvas實現(xiàn)網(wǎng)頁指定區(qū)域(指定dom元素)截圖

    直接上代碼: ** 如果要截取的dom元素、區(qū)域涉及到v-if或者v-show的條件表達(dá)式時,截取的方法請在nextTick里面調(diào)用----例如: this.$nextTick(() = { this.saveImageNew() }) 否之獲取dom元素的時候會獲取不到?。。。。。。。?/p>

    2024年02月04日
    瀏覽(28)
  • 使用selenium獲取網(wǎng)頁源碼

    使用selenium獲取網(wǎng)頁源碼

    安裝好selenium和下載好WebDriver后即可測試。下面演示如何打開一個網(wǎng)址,并獲取該網(wǎng)站的源碼。 基本步驟如下: 1. 導(dǎo)入webdriver from seleniumimport webdriver 2. 創(chuàng)建瀏覽器操作對象 指定下載的webdriver文件路徑,我有將該文件復(fù)制到了當(dāng)前程序運行的路徑下,所以直接指定該文件名,

    2023年04月08日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包