最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Selenium將網(wǎng)頁保存為圖片或PDF

 更新時間:2026年02月09日 09:27:00   作者:清山博客  
這篇文章主要為大家詳細(xì)介紹了Python如何使用Selenium配合Pillow實現(xiàn)將網(wǎng)頁保存為圖片或PDF,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

一、背景介紹

之前寫過一篇將網(wǎng)頁保存為圖片的文章

C#利用WebBrowser將網(wǎng)頁保存為圖片

這里有個弊端,C# WebBrowser使用的是IE內(nèi)核,目前很多網(wǎng)站都不支持IE了,所以需要找新的方案替代。 

二、Python實現(xiàn)

在Python中,一個常見的選擇是使用Selenium配合Pillow將網(wǎng)頁保存為圖片。

第1步:安裝Python環(huán)境。

如未安裝,請參考從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級功能(最新推薦)

第2步:安裝Selenium庫。

如果你還沒有安裝它們,可以使用pip來安裝:

打開windows命令行工具,輸入以下命令:

pip install selenium pillow

第3步:下載Chrome瀏覽器、ChromeDriver

使用Selenium需要一個WebDriver,比如ChromeDriver。

注意:下載的ChromeDriver需與使用的Chrome瀏覽器版本保持一致。

下載完后,報存到電腦任一目錄即可,如:

ChromeDriver官方下載地址可能打不開,可以使用華為提供的鏡像。

Index of chromedriver-local 各個版本都有,找到與自己Chrome的版本一致,下載即可。

第4步:編寫代碼將網(wǎng)頁保存為圖片

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from PIL import Image
import io

# 設(shè)置Chrome選項
chrome_options = Options()
chrome_options.add_argument("--headless")  # 無頭模式,不打開瀏覽器窗口
chrome_options.add_argument("--disable-gpu")

# 指定ChromeDriver的路徑
service = Service(executable_path='C:\\chromedriver-win64\\chromedriver.exe')

# 創(chuàng)建WebDriver對象
driver = webdriver.Chrome(service=service, options=chrome_options)

# 訪問目標(biāo)網(wǎng)頁
driver.get('https://blog.csdn.net/a497785609')

# 獲取頁面的實際高度和寬度
width = driver.execute_script("return document.documentElement.scrollWidth")
height = driver.execute_script("return document.documentElement.scrollHeight")

# 設(shè)置窗口大小
driver.set_window_size(width, height)

# 截圖并保存
driver.save_screenshot('C:\\chromedriver-win64\\screenshot.png')

# 使用Pillow處理圖像(可選)
image = Image.open(io.BytesIO(driver.get_screenshot_as_png()))
image.show()

# 關(guān)閉瀏覽器
driver.quit()

至此,使用Python+Chrome即可將網(wǎng)頁保存為圖片了。

第5步:將網(wǎng)頁保存為PDF

使用ChromeDriver+DevTools,可以將網(wǎng)頁保存為PDF。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from PIL import Image
import io
import base64

# 設(shè)置Chrome選項
chrome_options = Options()
chrome_options.add_argument("--headless")  # 無頭模式,不打開瀏覽器窗口
chrome_options.add_argument("--disable-gpu")

# ChromeDriver路徑
ChromeDriver = 'C:\\chromedriver-win64\\chromedriver.exe'

# 訪問目標(biāo)網(wǎng)頁
url = 'https://blog.csdn.net/a497785609'

# 保存PDF文件的路徑
file_name = "C:\\test.pdf"

# 指定ChromeDriver的路徑
service = Service(executable_path=ChromeDriver)

# 創(chuàng)建WebDriver對象
driver = webdriver.Chrome(service=service, options=chrome_options)

# 訪問目標(biāo)網(wǎng)頁
driver.get(url)

# 獲取頁面的實際高度和寬度
width = driver.execute_script("return document.documentElement.scrollWidth")
height = driver.execute_script("return document.documentElement.scrollHeight")

# 設(shè)置窗口大小
driver.set_window_size(width, height)

# 【打印為PDF】
# 調(diào)用 Chrome DevTools 的 printToPDF 方法,打印參數(shù)參考:https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
pdf_data = driver.execute_cdp_cmd("Page.printToPDF", {"landscape": False,
                                                      "displayHeaderFooter": False,
                                                      "printBackground": False,
                                                      "scale": 1.0,                # 必須是 float
                                                      "paperWidth": 8.5,           # A4紙寬度(英寸)
                                                      "paperHeight": 11.0,         # A4紙高度(英寸)
                                                      "marginTop": 0.5,
                                                      "marginBottom": 0.5,
                                                      "marginLeft": 0.5,
                                                      "marginRight": 0.5})
# 解碼并寫入 PDF 文件
with open(file_name, "wb") as f:
    f.write(base64.b64decode(pdf_data['data']))

print(" 已保存到文件:"+file_name)

# 關(guān)閉瀏覽器
driver.quit()

到此這篇關(guān)于Python使用Selenium將網(wǎng)頁保存為圖片或PDF的文章就介紹到這了,更多相關(guān)Python網(wǎng)頁保存為圖片或PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)的彈球小游戲示例

    Python實現(xiàn)的彈球小游戲示例

    這篇文章主要介紹了Python實現(xiàn)的彈球小游戲,可實現(xiàn)類似乒乓球游戲的鍵盤控制底部擋板移動碰撞小球的游戲功能,需要的朋友可以參考下
    2017-08-08
  • python文件操作seek()偏移量,讀取指正到指定位置操作

    python文件操作seek()偏移量,讀取指正到指定位置操作

    這篇文章主要介紹了python文件操作seek()偏移量,讀取指正到指定位置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 一文詳解如何在Python中使用Requests庫

    一文詳解如何在Python中使用Requests庫

    這篇文章主要介紹了如何在Python中使用Requests庫的相關(guān)資料,Requests庫是Python中常用的第三方庫,用于簡化HTTP請求的發(fā)送和響應(yīng)處理,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • pycharm中jupyter的使用圖文教程

    pycharm中jupyter的使用圖文教程

    這篇文章主要介紹了pycharm中jupyter的使用圖文教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python輕松查找文本文件最熱門單詞技巧

    Python輕松查找文本文件最熱門單詞技巧

    本文將從文件讀取、文本預(yù)處理到單詞頻率統(tǒng)計,以及性能優(yōu)化和數(shù)據(jù)可視化等方面逐步展開,為你呈現(xiàn)一場深入學(xué)習(xí)的旅程,讓我們一同探索如何用代碼揭示文字中的故事,發(fā)現(xiàn)其中隱藏的信息,從而更好地理解和利用這個數(shù)字化時代的寶藏
    2024-01-01
  • Python數(shù)據(jù)處理之pd.Series()函數(shù)的基本使用

    Python數(shù)據(jù)處理之pd.Series()函數(shù)的基本使用

    Series是帶標(biāo)簽的一維數(shù)組,可存儲整數(shù)、浮點數(shù)、字符串、Python 對象等類型的數(shù)據(jù),軸標(biāo)簽統(tǒng)稱為索引,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)處理之pd.Series()函數(shù)的基本使用,需要的朋友可以參考下
    2022-06-06
  • python regex庫實例用法總結(jié)

    python regex庫實例用法總結(jié)

    在本篇內(nèi)容里小編給大家整理了關(guān)于python regex庫實例用法總結(jié)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
    2021-01-01
  • python一行代碼合并了162個Word文件

    python一行代碼合并了162個Word文件

    這篇文章主要為大家介紹了python一行代碼合并了162個Word文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python基于tkinter點擊按鈕實現(xiàn)圖片的切換

    python基于tkinter點擊按鈕實現(xiàn)圖片的切換

    這篇文章主要介紹了python基于tkinter點擊按鈕實現(xiàn)圖片的切換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python數(shù)組復(fù)制拷貝的實現(xiàn)方法

    python數(shù)組復(fù)制拷貝的實現(xiàn)方法

    這篇文章主要介紹了python數(shù)組復(fù)制拷貝的實現(xiàn)方法,實例分析了Python數(shù)組傳地址與傳值兩種復(fù)制拷貝的使用技巧,需要的朋友可以參考下
    2015-06-06

最新評論

孟州市| 竹山县| 徐闻县| 通辽市| 井陉县| 白沙| 洛浦县| 大方县| 萍乡市| 嘉义市| 当涂县| 辉县市| 仁寿县| 井研县| 芷江| 郴州市| 宜兰县| 达日县| 广平县| 双辽市| 孟津县| 兴国县| 晋城| 固阳县| 额尔古纳市| 南雄市| 日照市| 阜新市| 泾阳县| 蒙自县| 新兴县| 句容市| 班戈县| 庆云县| 都安| 咸丰县| 图木舒克市| 彭州市| 沭阳县| 普宁市| 托克逊县|