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.
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.)
Vorläufig ging ich davon aus, dass ich es gemäß dem folgenden Ablauf herunterladen würde.
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.
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.
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.
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.
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