Schritte zum Massen-Download von Fotos des EGAO-Schulfotoservices mit Python-Basis

Hintergrund (Situation & Aufgabe)

Wenn ein Kind in einem Kindergarten ist, kann das Kindergartenpersonal ein Foto machen.

Es gibt verschiedene Möglichkeiten, diese Fotos zu teilen. Eine davon ist der "egao School Photo Service". Es ist ein Service von Studio Alice, aber ich denke, es ist ein ziemlich gutes System, mit dem Sie die Fotos Ihres Kindes auswählen, kaufen und zu einem späteren Zeitpunkt aus dem Internet herunterladen können.

ホームページ___egao_スクールフォトサービス.jpg https://egao.photo/store/

Die meisten Eltern wählen jedoch entweder viele Fotos aus oder nicht (mein Zuhause ist über hundert), aber es gibt keine Option für diesen Webdienst, den Massen-Download. Wenn Sie nacheinander klicken, verlieren Sie nach und nach den Überblick. .. .. .. Das ist schrecklich. .. .. ..

Es wird erwartet, dass die Situation wieder ähnlich sein wird. Machen Sie es also zu einem eigenen Memorandum.

** Dieser Artikel wurde basierend auf der egao-Website ab März 2020 erstellt und kann möglicherweise nicht verwendet werden, wenn die Spezifikationen der ega-Website geändert werden. ** **.

(Wenn möglich, fügen Sie einen Batch-Download hinzu, wenn sich die Website-Spezifikationen ändern.)

Was ich versucht habe (Aktion)

Vorläufig ging ich davon aus, dass ich es gemäß dem folgenden Ablauf herunterladen würde.

  1. Greifen Sie auf die Site zu
  2. Melden Sie sich an
  3. Übergang zur Download-Seite
  4. Laden Sie die angezeigten Bilder (gekaufte Fotos) in einem Stapel herunter

Im voraus vorbereiten

Die Vorbereitungen für das eigentliche Vorgehen sind wie folgt.

-Installieren Sie Selen und schöne Suppe. (Achten Sie besonders auf der PC-Seite auf die Version des Web-Treibers usw.) ・ Login-ID (E-Mail-Adresse) / Passwort ・ Kopieren Sie die URL der Listenseite mit den Fotos, die Sie herunterladen möchten, und fügen Sie sie ein.

Der Artikel, auf den (am Ende dieses Artikels) verwiesen wird, enthält detaillierte Informationen zu den voreingestellten Einstellungen, daher werde ich ihn hier weglassen.

Tatsächliches Verfahren (Ergebnis)

Zuerst habe ich die notwendigen Bibliotheken installiert.

python


from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup

Als nächstes habe ich Chrome.Webdriver für den automatischen Betrieb gestartet.

python


driver = webdriver.Chrome()
driver.implicitly_wait(3)

Verwenden Sie nach dem Start den folgenden Befehl, um auf die entsprechende Website zuzugreifen und sich anzumelden. Übrigens, wenn Sie den automatisch angezeigten Webbildschirm verkleinern, scheint sich die Struktur von XML zu ändern, und es besteht die Möglichkeit eines Fehlers. Bitte beachten Sie, dass wir nicht darüber nachdenken, wie wir mit diesem Bereich umgehen sollen.

python


url = "https://egao.photo/store/" #Webseite mit Anmeldeseite
user = "[email protected]" #Mein E.-Mail beschreiben
password = "hogehoge" #Geben Sie das von Ihnen festgelegte Passwort ein
driver.get(url)

elem = driver.find_element_by_id("btn-login")#Drücken Sie die Login-Taste auf der oberen Seite
elem.click()
elem = driver.find_element_by_id("inputEmail")#E-Mail Adresse eingeben
elem.clear()
elem.send_keys(user)
elem = driver.find_element_by_id("inputPassword")#Passworteingabe
elem.clear()
elem.send_keys(password)
elem = driver.find_element_by_xpath("//*[@id='login-modal']/div/div/div[2]/form/div/div[3]/div[1]/button")#Drücken Sie die Login-Taste
elem.click()

Informationen zum Verfahren von elem Wenn das Verfahren mit einem Bild beschrieben wird, hat es die folgende Form. Beim letzten Login wünschte ich mir, ich hätte eine ID, aber ich konnte sie nicht finden, also habe ich sie mit Xpath angegeben.

ホームページ___egao_スクールフォトサービス.jpg

Geben Sie als Nächstes die Webseite an, die Sie in großen Mengen herunterladen möchten, und verwenden Sie den Webtreiber, um die Seite zu verschieben.

python


url_target = "https://egao.photo/store/EventPhoto/Download?Model=hogehogehogehogehoge-1"
driver.get(url_target)

Dies ist die Hauptarbeit, die einmal mit Selenium Base ausgeführt werden muss, und dann kommt Beautiful Soup ins Spiel (beachten Sie, dass der von WebDriver angezeigte Browser nicht gelöscht werden sollte). Beautiful Soup hat die aktuell vom Webdriver geöffnete Seite geladen und analysiert.

python


page_source = driver.page_source
soup = BeautifulSoup(page_source, 'lxml')

PhotoId wurde üblicherweise als individueller Name in das herunterzuladende Bild aufgenommen. Extrahieren Sie zunächst den Teil, der die photoId enthält, und speichern Sie ihn in der Liste. Danach wurde die ID (individuelle ID für jedes Bild) weiter extrahiert.

python


linklist = []
linklist = soup.find_all('button', attrs={'name': 'photoId'})

linklist_2 = []
for a in linklist:
    b = a.attrs['id']
    linklist_2.append(b)

Es ist in Ordnung, wenn der Inhalt von linklist_2 wie folgt lautet.

['Download_XYXYXYXYXYYYY', 'Download_YYYYYYYYYYYYY', 'Download_XXXXXXXXXXXYY', 'Download_XXXXXXXXXXXXY']

Schließlich ging ich zurück zu Selenium und lud die Bilder für jede ID herunter.

python


for a in linklist_2:
    elem = driver.find_element_by_id(a)
    elem.click()

Mit der bisherigen Methode können Sie alle auf einmal bis zu der auf der Webseite angezeigten Höchstmenge herunterladen, sodass Sie sie erfassen können, indem Sie denselben Seitenübergang für eine andere Seite durchführen und denselben Befehl erneut ausführen. Es war.

Impressionen & was ich in Zukunft machen möchte

Wenn ich das nächste Mal viel herunterladen muss, denke ich darüber nach, etwas mehr zu automatisieren, einschließlich der Teile, die überflüssig geworden sind. Wie auch immer, ich bin froh, dass dies einfacher war, als ich die gleiche große Anzahl von Bildern erneut herunterladen musste.

Referenzierte Webseite

Die meisten notwendigen Dinge wurden in den folgenden beiden geschrieben. Vielen Dank.

[Selenium] Melden Sie sich an und schreiben Sie Daten in csv [Beautiful Soup]Bilder von Irasutoya sofort mit Python-Scraping herunterladen

Recommended Posts

Schritte zum Massen-Download von Fotos des EGAO-Schulfotoservices mit Python-Basis
So legen Sie Attribute mit Mock of Python fest
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Python: So verwenden Sie Async mit
Erste Schritte mit Python
So berechnen Sie das Datum mit Python
[Python] Zusammenfassung der Verwendung von Pandas
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
So arbeiten Sie mit BigQuery in Python
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
Wie man einen Taschentest mit Python macht
So zeigen Sie Python-Japanisch mit Lolipop an
So laden Sie YouTube-Videos mit youtube-dl herunter
[Python2.7] Zusammenfassung der Verwendung von unittest
Python-Code zum Trainieren und Testen mit Custom Vision of Cognitive Service
Wie man mit Python-Flüchen Japanisch eingibt
Zusammenfassung der Verwendung der Python-Liste
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Versuchen Sie, ein festgelegtes Problem der High-School-Mathematik mit Python zu lösen
So installieren Sie Python3 mit Docker Centos
[Frage] Wie verwende ich plot_surface von Python?
(Tagebuch 1) Erstellen, Durchsuchen und Registrieren von Daten in der SQL-Datenbank des Microsoft Azure-Dienstes mit Python
Zusammenfassung zum Lesen numerischer Daten mit Python [CSV, NetCDF, Fortran Binary]
Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Hochladen mit Heroku, Flask, Python, Git (4)
Lesen einer CSV-Datei mit Python 2/3
So speichern Sie alle Instagram-Fotos auf einmal
Wie man Spaß am Programmieren mit Minecraft hat (Ruby, Python)
[Python] Verwendung von zwei Arten von type ()
[REAPER] Wie man Reascript mit Python spielt
So führen Sie eine Mehrkern-Parallelverarbeitung mit Python durch
Strategie zur Monetarisierung mit Python Java
Zusammenfassung zum Importieren von Dateien in Python 3
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
[Python] Wie man Excel-Dateien mit Pandas liest
So beschneiden Sie ein Bild mit Python + OpenCV
Zusammenfassung der Verwendung von MNIST mit Python
So implementieren Sie "named_scope" von RubyOnRails mit Django
So messen Sie die Ausführungszeit mit Python Teil 1
So erhalten Sie Elemente vom Typ Wörterbuch von Python 2.7
Wie man tkinter mit Python in Pyenv benutzt
[Python] Umgang mit japanischen Zeichen mit openCV
[Python] Vergleichen von Datum und Uhrzeit mit der hinzugefügten Zeitzone
So messen Sie die Ausführungszeit mit Python Part 2
[Python] Zusammenfassung der Funktionen eval / exec + Schreiben einer Zeichenfolge mit Zeilenumbrüchen
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
So zählen Sie die Anzahl der Vorkommen jedes Elements in der Liste in Python mit der Gewichtung
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Wie man die Portnummer des xinetd-Dienstes kennt
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
So fügen Sie HDA Hilfe hinzu (mit Python-Skriptbonus)
Memo mit Python mit HiveServer2 von EMR verbunden
So ermitteln Sie die Anzahl der Stellen in Python
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet