如何使用python截取给定网址的屏幕截图

gom*_*ena 3 javascript python selenium python-3.x selenium-webdriver

我正在尝试从给定的 URL 中截取屏幕截图。在 javascript 中尝试过 html2canvas 库,由于它不支持某些 CSS 格式而放弃。现在尝试使用 python 和 selenium 或任何其他库(如果可能)捕获给定 URL 的屏幕截图。

我已经经历了以前的解决方案,我面临的是,

1.pyqt4 - 即使在安装 pyqt4 后,也不会出现名为“PyQt4.QtWebKit”的模块错误

2.selenium - 不截取整个页面滚动截图的代码。

3.phantom.js - 为某些网站提供浮点转储错误

硒的示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless") # Runs Chrome in headless mode.
options.add_argument('--no-sandbox') # # Bypass OS security model
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path='./chromedriver')
driver.get('/sf/ask/3570062961/')
driver.save_screenshot('screenshot-headless.png')
driver.quit()

Run Code Online (Sandbox Code Playgroud)

环境:

操作系统:ubuntu 18.04

蟒蛇:3.6

预期输出:(任何一个)

1.捕获的图像的Dataurl

2.Captured图像(通过滚动)

我的代码有什么问题?有没有其他选择?

Mik*_* Br 6

您是否尝试使用 Pyppeteer https://github.com/miyakogi/pyppeteer

使用fullPage参数,您可以截取整个页面的屏幕截图。

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch(headless=True)
    page = await browser.newPage()

    await page.goto('/sf/ask/3570062961/')
    await page.screenshot({'path': 'screen.png', 'fullPage': True})
    await browser.close()


asyncio.get_event_loop().run_until_complete(main())
Run Code Online (Sandbox Code Playgroud)

编辑

https://github.com/miyakogi/pyppeteer未维护。新项目:https : //github.com/pyppeteer/pyppeteer