webscreenshot/README.md

2.4 KiB

Webscreenshot Docker

Ziel des Projekts:

Automatisches Erstellen von Screenshots von ganzen Webseiten oder einzelnen Elementen (Auswahl via CSS-Selektor) und Speicherung in einem Apache-Webroot. Die Screenshots werden in einem konfigurierbaren Intervall erstellt und nur gespeichert, wenn der aktuelle Screenshot von der vorheringen Version abweicht.

Features:

  • Multi-URL-Support
  • Flexible Dateinamen der Screenshots
  • Skalierung der Screenshots in Relation zur Ursprungsgröße
  • Anpassbare Größe bei Auswahl einzelner CSS-Elemente (Höhe und Breite)
  • Individuelles Check-Intervall pro URL
  • Speicherung nur bei Änderung

Projektstruktur

webscreen/
 |-- docker-compose.yml
 |-- Dockerfile
 |-- requirements.txt
 |-- app/
      |-- webscreenshot.py
      |-- urls.csv

Konfiguration

Die Hauptkonfiguration erfolgt über die Datei urls.csv:

Spalte Beschreibung
url URL der Webseite
filename Name der Ausgabedatei (z.B. example.png)
scale Skalierungsfaktor (z.B. 0.5 für 50%)
selector CSS-Selector des Elements, das gescreenshotet werden soll; leer = ganze Seite
element_width Breite des Elements vor Screenshot (px); leer = keine Änderung
element_height Höhe des Elements vor Screenshot (px); leer = keine Änderung
interval_minutes Intervall für wiederholten Screenshot in Minuten; leer = Docker-Variable

Für den Fall dass bei der Skalierung oder beim Intervall keine Eintragung vorgenommen wird werden die "Standartwerte" aus den docker-compose environment-Variabeln genommen. Diese können in der docker-compose.yml angepasst werden.


Installation und Nutzung

  1. Output-Verzeichnis erstellen: mkdir output

  2. docker-compose.yml ggf. anpassen

  3. urls.csv anpassen

  4. Stack starten docker compose up -d --build

  5. Screenshots sind abrufbar unter http://localhost:8080/example.png


Hinweise

  • Im Docker-Stack werden 2 Container erstellt: ein apache-Container um die Screenshots zugänglich zu machen und ein webscreenshot-Container, welcher das eigentliche python-Skript ausführt.
  • Es wird empfohlen, den apache-Container hinter einem reverse proxy zu betreiben, so lassen sich die Screenshots per https abrufen.
  • Der Port des apache-Servers kann regulär frei in der docker-compose.yml geändert werden