【原创实践】python版playwright截取多个图

你可以使用 Playwright 来获取当前页面的截图。以下是一个示例代码:

复制代码
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 用内置 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("热搜区未找到链接")
        else:
            print("页面上未找到热搜元素")

        browser.close()


if __name__ == '__main__':
    click_first_link_in_hotsearch_and_get_url()

在这个示例中,page.screenshot() 方法用于获取当前页面的截图,并将其保存到指定的文件路径(screenshot.png)。确保替换 'https://www.baidu.com' 为你想要截图的实际网址。如果你希望在截图后不关闭浏览器,记得注释掉 browser.close() 部分。

注意:截图之前最好等待页面加载完成,以确保获取到完整的页面截图。在这个示例中,使用了 page.wait_for_load_state('load') 来等待页面加载完成,但你可能需要根据实际情况调整等待的条件。

相关推荐
dialect_15 小时前
KMP算法
开发语言·c++·算法
总要学点什么16 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
前端精髓16 小时前
结构化输出with_structured_output(抽卡)
python·langchain
尹人入圣17 小时前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
开开心心_Every18 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c18 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
Nuanyt18 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
吴卫斌18 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
2601_9679873718 小时前
Python——入门级(定义功能def函数)
python·函数·可变参数·默认参数·关键字参数
超级架构师19 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core