Lorsqu'un enfant est dans une école maternelle, le personnel de l'école maternelle peut prendre une photo.
Il existe plusieurs façons de partager ces photos, dont l'une est le "egao School Photo Service". C'est un service de Studio Alice, mais je pense que c'est un très bon système qui vous permet de sélectionner et d'acheter les photos de votre enfant et de les télécharger sur le Web à une date ultérieure.
https://egao.photo/store/
Cependant, la plupart des parents choisissent beaucoup de photos, que ce soit ou non (ma maison compte plus d'une centaine), mais il n'y a pas d'option pour ce service Web, le téléchargement en masse. Si vous cliquez un par un, vous perdrez progressivement la trace de ce que c'est. .. .. .. C'est horrible. .. .. ..
Je suis sûr que ce sera à nouveau une situation similaire, alors faites-en votre propre mémorandum.
** Cet article a été créé sur la base du site Web egao en mars 2020 et peut ne pas être utilisable si les spécifications du site Web ega sont modifiées. ** **
(Si possible, veuillez ajouter un téléchargement par lots en cas de modification des spécifications du site Web)
Pour le moment, j'ai supposé que je le téléchargerais selon le flux suivant.
Les préparatifs pour procéder effectivement sont les suivants.
-Installez du sélénium et une belle soupe. (Surtout côté PC, faites attention à la version du pilote Web, etc.) ・ Identifiant de connexion (adresse e-mail) / mot de passe ・ Copiez et collez l'URL de la page de liste contenant les photos que vous souhaitez télécharger.
L'article auquel il est fait référence (à la fin de cet article) est détaillé sur les paramètres prédéfinis, je vais donc l'omettre ici.
Tout d'abord, j'ai installé les bibliothèques nécessaires.
python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
Ensuite, j'ai lancé Chrome.Webdriver pour un fonctionnement automatique.
python
driver = webdriver.Chrome()
driver.implicitly_wait(3)
Après le lancement, utilisez la commande suivante pour accéder au site Web concerné et vous connecter. À propos, si vous réduisez l'écran Web qui s'affiche automatiquement, la structure de xml semble changer et il y a une possibilité qu'une erreur se produise. Veuillez noter que nous ne réfléchissons pas à la manière de traiter ce domaine.
python
url = "https://egao.photo/store/" #Page Web avec page de connexion
user = "[email protected]" #Mon E-Décrivez le courrier
password = "hogehoge" #Entrez le mot de passe que vous avez défini
driver.get(url)
elem = driver.find_element_by_id("btn-login")#Appuyez sur le bouton de connexion en haut de la page
elem.click()
elem = driver.find_element_by_id("inputEmail")#entrer l'adresse e-mail
elem.clear()
elem.send_keys(user)
elem = driver.find_element_by_id("inputPassword")#Saisie du mot de passe
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")#Appuyez sur le bouton de connexion
elem.click()
À propos de la procédure d'elem Si la procédure est décrite avec une image, elle se présente sous la forme suivante. Lors de la dernière connexion, j'aurais aimé avoir un identifiant, mais je ne l'ai pas trouvé, alors je l'ai spécifié en utilisant Xpath.
Ensuite, spécifiez la page Web que vous souhaitez télécharger en masse et utilisez le pilote Web pour déplacer la page.
python
url_target = "https://egao.photo/store/EventPhoto/Download?Model=hogehogehogehogehoge-1"
driver.get(url_target)
C'est le travail principal à faire une fois avec Selenium base, puis Beautiful Soup entre en jeu (notez que le navigateur affiché par WebDriver ne doit pas être supprimé). Beautiful Soup a chargé la page actuellement ouverte par le webdriver et l'a analysée.
python
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'lxml')
PhotoId était généralement inclus en tant que nom individuel dans l'image à télécharger. Tout d'abord, extrayez la partie contenant le photoId et stockez-le dans la liste. Après cela, l'identifiant (identifiant individuel pour chaque image) a été extrait.
python
linklist = []
linklist = soup.find_all('button', attrs={'name': 'photoId'})
linklist_2 = []
for a in linklist:
b = a.attrs['id']
linklist_2.append(b)
C'est OK si le contenu de linklist_2 est comme suit.
['Download_XYXYXYXYXYYYY', 'Download_YYYYYYYYYYYYY', 'Download_XXXXXXXXXXXYY', 'Download_XXXXXXXXXXXXY']
Enfin, je suis retourné sur Selenium et j'ai téléchargé les images pour chaque identifiant.
python
for a in linklist_2:
elem = driver.find_element_by_id(a)
elem.click()
Avec la méthode jusqu'à présent, vous pouvez télécharger en une seule fois jusqu'au montant maximum affiché sur la page Web, de sorte que vous pouvez le collecter en effectuant la même transition de page pour une autre page et en exécutant à nouveau la même commande. C'était.
La prochaine fois que j'aurai besoin de télécharger beaucoup, je pense à automatiser un peu plus, y compris les parties qui sont devenues redondantes. Quoi qu'il en soit, je suis heureux que cela ait facilité la tâche lorsque j'ai besoin de télécharger à nouveau le même grand nombre d'images.
La plupart des choses nécessaires ont été écrites dans les deux suivants. Merci.
・ [Selenium] Connectez-vous et écrivez des données dans csv [Beautiful Soup] ・ Téléchargez des images d'Irasutoya à la fois avec le grattage Python
Recommended Posts