LINUX.ORG.RU

Скриншоты страниц сайтов в консоли

 ,


0

1

Понадобилось снимать скриншоты со страниц сайтов из консоли, т.е. без X-ов.
Не придумал пока ничего другого, как использование XVFB.

Установил xvfb:amd64 (2:1.20.4-1) в Debian 10.

Пробую снимать скриншоты страниц с помощью питоновского скрипта:

from selenium import webdriver
from xvfbwrapper import Xvfb

vdisplay = Xvfb()
vdisplay.start()

driver = webdriver.Chrome(r'/home/first/bin/chromedriver')
#driver = webdriver.Firefox(executable_path=r'/home/first/bin/geckodriver')

driver.get("https://2ip.ru")

driver.save_screenshot("check_ip.png")
driver.quit()

vdisplay.stop()

Если использовать Chromium, то скриншоты снимаются отлично, но если использовать Firefox 78.3.0esr, возникает ошибка:
~/bin$ python3 test.py
Traceback (most recent call last):
  
File "test.py", line 7, in <module>
    driver = webdriver.Firefox(executable_path=r'/home/first/bin/geckodriver')
  
File "/home/first/.local/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  
File "/home/first/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  
File "/home/first/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  
File "/home/first/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  
File "/home/first/.local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

 
Чем он недоволен и можно ли это преодолеть?

Да, и еще - использование xvfb это хороший способ снятия скриншотов страниц в консоли, или есть получше?


Спасибо, парни! Сразу столько свежих идей, пошел изучать :-)

Перевод в PDF потестил сразу при при помощи wkhtmltopdf , только оно увы, не все сайты понимает корректно.
Но дело даже не в этом - а что потом делать с этим pdf ? Он же не шибко поддается редактированию, инструментов нет.

Забегая вперед, мне нужно сделать страницу сайта, которая будет выглядеть как клетки с «тумбочками», на внешний вид похоже на Youtube, ну или SpeedDial.

Для этого нужно полученные со страниц сайта скриншоты маштабировать, чтобы они поместились в клетки своей страницы на веб-серваке.

Конечно, было бы классно, если бы для этого уже существовал готовый инструментарий, но подозреваю, что такого не существует, поэтому и приходится колхозить из палки и веревки ;-)

Red7 ()
Ответ на: комментарий от Red7

Как раз для масштабирования PDF подходит гораздо лучше растровых картинок. Через pdftocairo можно перевести PDF в растр с требуемым разрешением.

Насчёт шибки Селениума: может стоит написать в багтрекер? Там разрабы явно лучше в его ошибках разбираются, чем местный Анон.

anonymous ()

но если использовать Firefox 78.3.0esr, возникает ошибка:

Насколько я понял, эта ошибка появляется в 0.27 версии geckodriver, которую раздают на GitHub.

С версией 0.26 ваш код работает. По крайней мере у меня так заработал )

Там в ChangeLog 0.27 написано " - The version number of Firefox is now checked when establishing a session."

Toxo2 ★★ ()
Ответ на: комментарий от Toxo2

Headless Chrome в Puppeteer не вариант?

Вариант, только нужен Node.JS, неохота с ним связываться, да еще решать эти лишние проблемы .

С версией 0.26 ваш код работает. По крайней мере у меня так заработал )

И у меня заработал! Спасибо большое, Toxo2! :-)

Red7 ()