python playwright實現(xiàn)獲取當(dāng)前頁面的截圖
你可以使用 Playwright 來獲取當(dāng)前頁面的截圖。以下是一個示例代碼:
import os
import sys
from playwright.sync_api import sync_playwright
def find_chrome_executable():
"""
自動檢測 Chrome / Chromium 在 Windows / macOS / Linux 平臺的常見安裝位置。
找不到返回 None。
"""
if sys.platform.startswith("win"):
paths = [
os.path.expandvars(r"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe"),
os.path.expandvars(r"%ProgramFiles%\Google\Chrome\Application\chrome.exe"),
os.path.expandvars(r"%LocalAppData%\Google\Chrome\Application\chrome.exe"),
]
elif sys.platform.startswith("darwin"): # macOS
paths = [
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"/Applications/Chromium.app/Contents/MacOS/Chromium",
]
elif sys.platform.startswith("linux"):
paths = [
"/usr/bin/google-chrome",
"/usr/bin/google-chrome-stable",
"/usr/bin/chromium",
"/usr/bin/chromium-browser",
"/snap/bin/chromium",
]
else:
return None
for path in paths:
if os.path.exists(path):
return path
return None
def click_first_link_in_hotsearch_and_get_url():
chrome_path = find_chrome_executable()
if not chrome_path:
print("? 未找到本地 Chrome,程序退出。")
return
print(f"? 使用本地 Chrome:{chrome_path}")
with sync_playwright() as p:
# 不允許 fallback 用內(nèi)置 Chromium
browser = p.chromium.launch(executable_path=chrome_path, headless=True)
page = browser.new_page()
page.goto('https://www.baidu.com')
page.wait_for_load_state('load')
hotsearch_selector = '#s-hotsearch-wrapper'
page.wait_for_selector(hotsearch_selector)
hotsearch_element = page.query_selector(hotsearch_selector)
if hotsearch_element:
first_link = hotsearch_element.query_selector("a")
if first_link:
url = first_link.get_attribute('href')
print(f"第一個鏈接URL:{url}")
page.goto(url)
page.wait_for_load_state('load')
screenshot_path = 'screenshot_after_click.png'
page.screenshot(path=screenshot_path)
print(f"截圖已保存到 {screenshot_path}")
else:
print("熱搜區(qū)未找到鏈接")
else:
print("頁面上未找到熱搜元素")
browser.close()
if __name__ == '__main__':
click_first_link_in_hotsearch_and_get_url()
在這個示例中,page.screenshot() 方法用于獲取當(dāng)前頁面的截圖,并將其保存到指定的文件路徑(screenshot.png)。確保替換 ‘https://www.baidu.com’ 為你想要截圖的實際網(wǎng)址。如果你希望在截圖后不關(guān)閉瀏覽器,記得注釋掉 browser.close() 部分。
注意:截圖之前最好等待頁面加載完成,以確保獲取到完整的頁面截圖。在這個示例中,使用了 page.wait_for_load_state(‘load’) 來等待頁面加載完成,但你可能需要根據(jù)實際情況調(diào)整等待的條件。
知識擴(kuò)展
下面我們來看看如何利用Playwright庫在Python中進(jìn)行屏幕截圖、截取全頁面長圖以及特定元素的截圖。
捕獲屏幕截圖保存
page.screenshot(path="screenshot.png")
代碼如下(示例):
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=1000)
context = browser.new_context()
page = context.new_page()
page.goto("https://blog.csdn.net/weixin_44688529?spm=1010.2135.3001.5343")
print(page.title())
page.screenshot(path="screenshot.png")

截長圖
page.screenshot(path="screenshot.png", full_page=True)
代碼如下(示例):
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=1000)
context = browser.new_context()
page = context.new_page()
page.goto("https://blog.csdn.net/weixin_44688529?spm=1010.2135.3001.5343")
print(page.title())
page.screenshot(path="screenshot.png", full_page=True)

截取單個元素
先定位到需要截圖的元素,再截圖保存
from playwright.async_api import Playwright
from playwright.sync_api import sync_playwright
def run(playwright: Playwright):
# 啟動 chromium 瀏覽器
browser = p.chromium.launch(headless=False,slow_mo=1000)
context = browser.new_context()
# 打開一個標(biāo)簽頁
page = context.new_page()
# 打開百度
page.goto("http://192.168.64.209:8008/#/login")
# 打印當(dāng)前頁面title
print(page.title())
page.locator(".s-canvas").screenshot(path="example.png")

到此這篇關(guān)于python playwright實現(xiàn)獲取當(dāng)前頁面的截圖的文章就介紹到這了,更多相關(guān) playwright獲取截圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python基礎(chǔ)教程之基本內(nèi)置數(shù)據(jù)類型介紹
在Python程序中,每個數(shù)據(jù)都是對像,每個對像都有自己的一個類型。不同類型有不同的操作方法,使用內(nèi)置數(shù)據(jù)類型獨有的操作方法,可以更快的完成很多工作2014-02-02
opencv+python識別七段數(shù)碼顯示器的數(shù)字(數(shù)字識別)
本文主要介紹了opencv+python識別七段數(shù)碼顯示器的數(shù)字(數(shù)字識別),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
darknet框架中YOLOv3對數(shù)據(jù)集進(jìn)行訓(xùn)練和預(yù)測詳解
這篇文章主要為大家介紹了darknet框架中YOLOv3對數(shù)據(jù)集進(jìn)行訓(xùn)練和預(yù)測使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
python 虛擬環(huán)境調(diào)用allure報錯:FileNotFoundError: [WinError
python代碼調(diào)用命令行 allure命令報錯,提示找不到allure這個命令,本文就詳細(xì)的介紹了具體的解決方法,具有一定的參考價值,感興趣的可以了解一下2023-09-09
JupyterNotebook 如何調(diào)整輸出窗口的顯示效果
這篇文章主要介紹了JupyterNotebook 輸出窗口的顯示效果調(diào)整實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

