如何获取给定URL的完整页面截图?

2024-10-01 19:31:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想拍一张整个网站的截图(不仅仅是打开时浏览器中可见的部分)。我寻找解决办法,找到了许多答案,但似乎没有一个对我有用。你知道吗

我目前的方法适用于一些网站:

from selenium import webdriver
import time

def createPNGChrome(url):
    DRIVER = '/Users/userName/PycharmProjects/WebsiteMonitor/Screenshots/chromedriver'
    driver = webdriver.Chrome(DRIVER)

    driver.get(url)
    time.sleep(1.5)
    element = driver.find_element_by_tag_name('body')

    screenshot = element.screenshot_as_png
    driver.quit()

    return screenshot

# works
#fullPageScreenshot = createPNGChrome('https://news.ycombinator.com/')

# works
#fullPageScreenshot = createPNGChrome('https://www.spotify.com/de/')

# fails
fullPageScreenshot = createPNGChrome('https://www.de.abbott/media-center/press-releases/05-10-2018.html')  # fails

with open('fullPageScreenshot.png', "wb") as file:
    file.write(fullPageScreenshot)

对于上一个网站(雅培),我得到以下例外:

selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot take screenshot with 0 height."}
  (Session info: chrome=74.0.3729.169)
  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.5 x86_64)

这种方法有可靠的解决方法吗?我也可以使用完全不同的解决方案,只要结果是可靠的全页截图,就不使用selenium。你知道吗


Tags: 方法httpsimporturltime网站driverselenium

热门问题