欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Selenium基于PIL實現(xiàn)拼接滾動截圖

 更新時間:2020年04月10日 11:23:00   作者:臨淵  
這篇文章主要介紹了Selenium基于PIL實現(xiàn)拼接滾動截圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Selenium默認的截圖save_screenshot只支持對當前窗口內(nèi)容進行截圖,當如果你想要截取整個網(wǎng)頁,那么,可以明確的告訴你。
Selenium做不到。

你可以手工使用開發(fā)者工具Ctrl+Shift+P調(diào)出命令行菜單,執(zhí)行Capture full screenshot命令進行截圖,如下圖圖:

也可以通過

Selenium Webdriver的 execute_cdp_cmd()來調(diào)用一下Chrome DevTools Protocal提供的方法。但是,很遺憾,沒有全屏截圖的方法。

Selenium2時,還可以使用Firefox全屏截圖。Selenium3之后,所有瀏覽器不再支持。

一種方式是使用aShot,一個jar包,這顯然是Java派的解決方案。

另外如果對樣式?jīng)]有強迫癥的話,可以通過滾動頁面截取多張+PIL圖片拼接的方式實現(xiàn)全屏的截圖。

示例代碼:

from time import sleep
from PIL import Image
import numpy as np
from selenium import webdriver

driver = webdriver.Chrome()
driver.fullscreen_window() # 全屏窗口
driver.get('https://www.qq.com/')
window_height = driver.get_window_size()['height'] # 窗口高度

page_height = driver.execute_script('return document.documentElement.scrollHeight') # 頁面高度
driver.save_screenshot('qq.png')

if page_height > window_height:
  n = page_height // window_height # 需要滾動的次數(shù)
  base_mat = np.atleast_2d(Image.open('qq.png')) # 打開截圖并轉(zhuǎn)為二維矩陣

  for i in range(n):
    driver.execute_script(f'document.documentElement.scrollTop={window_height*(i+1)};')
    sleep(.5)
    driver.save_screenshot(f'qq_{i}.png') # 保存截圖
    mat = np.atleast_2d(Image.open(f'qq_{i}.png')) # 打開截圖并轉(zhuǎn)為二維矩陣
    base_mat = np.append(base_mat, mat, axis=0) # 拼接圖片的二維矩陣
  Image.fromarray(base_mat).save('hao123.png')

driver.quit()

需要安裝PIL和numpy: pip install PIL numpy

上例中,全屏窗口以獲得最大展示范圍,通過get_window_size()獲取屏幕高度,通過執(zhí)行js,獲取頁面高度。
相除后獲得滾動次數(shù)。

每次滾動后,截圖保存,然后使用Image打開轉(zhuǎn)換為二維矩陣拼接到上一個圖片的二維矩陣中。

循環(huán)完,最后再將拼接的二維矩陣輸出成圖片。

效果展示,如下圖:

注意:如果是流式加載的頁面,頁面高度是不斷變長的,非固定為第一次獲取到的page_height的值,需要另外處理

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • django 自定義用戶user模型的三種方法

    django 自定義用戶user模型的三種方法

    這篇文章主要介紹了django 自定義用戶user模型的三種方法,需要的朋友可以參考下
    2014-11-11
  • python實現(xiàn)簡易自習室座位預約系統(tǒng)

    python實現(xiàn)簡易自習室座位預約系統(tǒng)

    本文將結(jié)合實例代碼,介紹python實現(xiàn)簡易自習室座位預約系統(tǒng),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • PyTorch的SoftMax交叉熵損失和梯度用法

    PyTorch的SoftMax交叉熵損失和梯度用法

    今天小編就為大家分享一篇PyTorch的SoftMax交叉熵損失和梯度用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Django中的CBV和FBV示例介紹

    Django中的CBV和FBV示例介紹

    這篇文章主要給大家介紹了關于Django中CBV和FBV的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-02-02
  • python selenium對應的瀏覽器chromedriver版本不一致問題

    python selenium對應的瀏覽器chromedriver版本不一致問題

    這篇文章主要介紹了python selenium對應的瀏覽器chromedriver版本不一致問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python讀取幾個G的csv文件方法

    python讀取幾個G的csv文件方法

    今天小編就為大家分享一篇python讀取幾個G的csv文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python并查集Disjoint?Set的具體使用

    Python并查集Disjoint?Set的具體使用

    本文主要介紹了Python并查集Disjoint?Set的具體使用,包括并查集的基本概念、實現(xiàn)方式、路徑壓縮和應用場景,并使用代碼示例演示并查集的操作,感興趣的可以了解一下
    2024-01-01
  • 使用Python實現(xiàn)大學座位預約功能

    使用Python實現(xiàn)大學座位預約功能

    這篇文章主要介紹了如何用Python實現(xiàn)大學座位預約,今天這個教程教你如何搶到座位,有座位了還怕聽不到課嗎?感興趣的朋友一起看看吧
    2022-03-03
  • 進一步探究Python中的正則表達式

    進一步探究Python中的正則表達式

    這篇文章主要介紹了Python中的正則表達式的一些用法,正則表達式的使用是Python學習進階中的重要知識,需要的朋友可以參考下
    2015-04-04
  • 利用Psyco提升Python運行速度

    利用Psyco提升Python運行速度

    這篇文章主要介紹了利用Psyco提升Python運行速度,需要的朋友可以參考下
    2014-12-12

最新評論