Как сделать снимок экрана веб-сайта с помощью Golang?

Что я хочу сделать, учитывая URL-адрес и снимок экрана веб-сайта с помощью Golang. Я искал результаты, но не получил. Кто-нибудь может мне помочь, пожалуйста.


person Raj    schedule 16.02.2017    source источник
comment
Потребуется движок рендеринга на чистом Go. Нет ни одного. Используйте PhantomJS или что-то в этом роде.   -  person Volker    schedule 16.02.2017
comment
Попросите пользователя загрузить снимок экрана, нажав кнопку Print Screen.   -  person Pratik Ghag    schedule 10.08.2017


Ответы (5)


Вы можете использовать версию Selenium для Go, если хотите пойти по этому пути. https://godoc.org/github.com/tebeka/selenium

person mvndaai    schedule 16.02.2017

На данный момент нет способа сделать это на чистом голанге, так как он должен включать браузер в какой-то форме.

Вероятно, самый простой способ реализовать эту функциональность:

  • Найдите хорошую библиотеку NodeJS, чтобы делать скриншоты веб-сайтов
  • Создайте сценарий NodeJS, который соответствует вашим потребностям для создания снимков экрана (ввод-вывод и настройки)
  • Выполните этот скрипт NodeJS из Golang и обработайте результаты в своем коде Golang.

Это не самый чистый способ сделать это - если вы хотите, чтобы он был чище, вам, вероятно, придется создать / найти пакет golang, который управляет браузером, чтобы вы могли пропустить посредника NodeJS.

person Robin Andersson    schedule 16.02.2017

Я решил эту проблему с помощью https://github.com/mafredri/cdp и контейнера Docker без заголовка Chrome. .

Вы можете увидеть мой пример услуги здесь: https://gist.github.com/

person Alex Efimov    schedule 14.05.2018

Еще несколько инструментов, использующих Go и Chrome / Chromium, включают:

  • Приложение gowitness с интерфейсом командной строки
  • Библиотека screenshot
  • web2image CLI-приложение на основе _ 4_
person Grokify    schedule 04.12.2019

Я писал программу для этой конкретной задачи. Вот пример кода, который просматривает google.com и делает снимок экрана.

package main

import (
    "time"

    driver "github.com/dreygur/webdriver"
)

func main() {
    url := `https://google.com`
    driver.RunServer("./geckodriver")
    driver.GetSession()
    driver.Get(url)
    time.Sleep(8 * time.Second)
    driver.Screenshot("google")
    time.Sleep(8 * time.Second)

    defer driver.Kill()
}

Для установки модуля запустите go get github.com/dreygur/webdriver

person dreygur    schedule 11.02.2021