如何获取高分辨率的网站截图?

2024-04-29 07:00:20 发布

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

我想捕捉一个网站的高分辨率截图,以识别文本或简单地保存高质量的图像。我在Python2.7中尝试了这段代码。网站http://www.flaticon.com/只是作为一个例子。

from selenium import webdriver
import time
driver = webdriver.PhantomJS()
#Setting large window size doesn`t resolve the problem
driver.set_window_size(16000, 12000)
driver.get('http://www.flaticon.com/')
time.sleep(3)
#set resolution 640 dots per inch for this image 
#???
driver.save_screenshot('./downloaded/img/welcome_icons.png') # save a screenshot to disk
driver.close()

它捕捉了截图,但分辨率对我来说还不够。增大窗口大小并不能解决这个问题。来自webside的图片仅位于图像的一部分。图像分辨率似乎没有受到影响。 有什么方法可以在保存之前显式设置图像分辨率?


Tags: 图像importcomhttpsizetime网站save
2条回答

如果要更改窗口大小,可以通过

driver.set_window_size(480, 320)

下面是一个开发人员Github的例子。如您所见,您可以调整窗口大小和屏幕截图的质量。

import StringIO
from selenium import webdriver
from PIL import Image


# Install instructions
#
# npm install phantomjs
# sudo apt-get install libjpeg-dev
# pip install selenium pillow


driver = webdriver.PhantomJS(executable_path="node_modules/phantomjs/bin/phantomjs")
driver.set_window_size(1366, 728) # optional
driver.get('http://google.com')
driver.save_screenshot('screen_hires.png')

screen = driver.get_screenshot_as_png()

# Crop it back to the window size (it may be taller)
box = (0, 0, 1366, 728)
im = Image.open(StringIO.StringIO(screen))
region = im.crop(box)
region.save('screen_lores.jpg', 'JPEG', optimize=True, quality=95)

100的质量是最大值,0-最小值

编辑:

您也可以使用selenium.windowMaxmize()

如果你想放大屏幕来看到你说的一些特定的文本,你可以在Mozilla中试试这个:

from selenium.webdriver.common.keys import Keys    

br = webdriver.Firefox()
zoom = ActionChains(br)
body = br.find_element_by_tag_name('body')
for i in range(2):
    zoom.send_keys_to_element(body,Keys.CONTROL,"+").perform()

这有点老套,但我自己解决了这个问题,把窗口的宽度增加到3000,变焦到250%。

driver.set_window_size(3000,800)

driver.execute_script("document.body.style.zoom='250%'")

希望这有帮助。

相关问题 更多 >