[PYTHON] Ein Skript, das die in CSV geschriebenen URLs der Reihe nach öffnet und einen Vollbild-Screenshot erstellt

Ich habe ein bisschen geschrieben, weil ich es brauchte.

Umgebung

Modul

Code

Ich gehe von dieser Art der Konfiguration aus.

.
├── data
│   └── urls.csv
├── utilities
│   └── read_csv.py
└── test_screenshot.py

Hauptverarbeitung

Es ist ein Prozess, die in der URL-Spalte von csv geschriebene URL zu öffnen, einen Screenshot zu erstellen und sie zu öffnen, um einen Screenshot zu erstellen.

Die Breite ist auf 1920px festgelegt, es ist jedoch möglich, sowohl das Scrollen als auch die Höhe zu unterstützen.

test_screenshot.py


import time

import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

from utilities.read_csv import read_csv_data


class TestScreenshot():

    datalist = read_csv_data("./data/urls.csv")

    @classmethod
    def setup_class(cls):
        options = Options()
        options.add_argument('--headless')
        options.add_argument('--hide-scrollbars')
        cls.driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
        cls.driver.maximize_window()

    @pytest.mark.parametrize("id, url", datalist)
    def test_reserve_multi(self, id, url):
        driver = self.driver
        driver.get(url)
        time.sleep(3)
        page_height = driver.execute_script('return document.body.scrollHeight')
        driver.set_window_size(1920, page_height)
        driver.save_screenshot(id + '.png')

CSV

Es hat zwei Spalten, die Spalte "id" und die Spalte "url". id wird auch im Namen der Screenshot-Datei verwendet.

urls.csv


id,url
1,https://www.hoge.co.jp/
2,https://www.hoge.co.jp/pageA/
3,https://www.hoge.co.jp/pageB/
4,https://www.hoge.co.jp/pageC/
5,https://www.hoge.co.jp/pageD/

CSV-Lesevorgang

read_csv.py


import csv

def read_csv_data(csv_path):
    rows = []
    with open(str(csv_path), encoding="utf-8") as csv_data:
        content = csv.reader(csv_data)
        next(content, None)
        for row in content:
            rows.append(row)
        print(rows)
        return rows

Wie benutzt man

> pytest test_screenshot.py

wichtiger Punkt

Ich habe tatsächlich versucht, es zu verwenden, aber ich konnte es nicht im Vollbildmodus auf einer Site anzeigen, die sich bewegte, indem ich JS vollständig nutzte.

Wahrscheinlich nicht auf diese Methode beschränkt, ich denke, es ist ziemlich streng.

Referenz

Recommended Posts

Ein Skript, das die in CSV geschriebenen URLs der Reihe nach öffnet und einen Vollbild-Screenshot erstellt
Python-Skript, das SQL-Dateien liest, BigQuery ausführt und CSV speichert
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Derjenige, der die CSV-Datei teilt, liest und parallel verarbeitet
[Hinweis] Basierend auf dem Breiten- und Längengrad der CSV-Datei haben wir ein Skript erstellt, das Daten im Zielbereich extrahiert und einen Netzcode hinzufügt.
Führen Sie den Python-Interpreter im Skript aus
Definieren Sie den Teilungswert in Django und spiegeln Sie ihn einfach auf dem Bildschirm wider
Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet
Eine Lösung für das Problem, dass Dateien mit [und] nicht in glob.glob () aufgeführt sind