Comment soumettre automatiquement des formulaires Microsoft à l'aide de python (version Mac)

introduction

Récemment, en raison de l'influence de «sont», j'ai dû soumettre des formulaires Microsoft tôt chaque matin dans ma situation. Considérant cela comme "encombrant", j'ai décidé d'implémenter la réponse automatique Forms tout en apprenant le scraping web python.

1. Environnement de création ・ MacOS X Catalina 10.15.7 ・ Chrome 86.0.4240.80 ・ Python 3.7.4 ・ Homebrew

2. Installation du module

Installez sélénium avec l'invite de commande.

pip install selenium

Installez webdrider en utilisant Homebrew. Si vous n'avez pas Homebrew, veuillez d'abord installer Homebrew.

brew install chormedriver

3. Création de code

Importez le webdriver depuis le sélénium. Importez le mode veille pour traiter et arrêter pendant quelques secondes.

form_send


from selenium import webdriver
from time import sleep

Il y a un module dans le sélénium lui-même qui attend le traitement, mais quand je l'ai essayé, l'opération après la transition de page n'a pas fonctionné, je vais donc arrêter l'opération avec sleep (). Dans les cas suivants, le traitement sera interrompu pendant 10 secondes.

sleep(10)

Lancez le navigateur Web et entrez l'URL du formulaire dans *** of url = '***'.

form_send


browser = webdriver.Chrome()
url = '***'
browser.get(url)

Si vous entrez l'URL des formulaires, vous serez redirigé vers l'écran de connexion, alors vérifiez l'élément de zone de texte où vous entrez votre adresse e-mail. Ouvrez les outils de développement avec ⌘ + option + i et appuyez sur la marque ci-dessous en haut à gauche pour spécifier l'élément. image.png Après examen, les formulaires Microsoft utilisent l'identifiant i0116. (Il peut avoir changé, il est donc recommandé de le vérifier au moment de la création) Vous pouvez spécifier un élément de id en utilisant browser.find_element_by_id (). Vous pouvez remplir la zone de texte avec .send_keys (email). Veuillez spécifier votre propre email. Trouvez l'identifiant du bouton de la même manière. Cliquez sur l'élément avec .click ().

form_send


browser.find_element_by_id('i0116').send_keys(email)
browser.find_element_by_id('idSIButton9').click()
sleep(3)

Entrez dans l'écran de mot de passe et dans l'écran de confirmation de maintenance de connexion de la même manière.

form_send


browser.find_element_by_id('i0118').send_keys(password)
browser.find_element_by_id('idSIButton9').click()
sleep(3)

browser.find_element_by_id('idSIButton9').click()
sleep(3)

Ensuite, vous irez à l'écran de réponse des formulaires.

Comme id n'est pas spécifié dans la partie réponse des formulaires, spécifiez xpath.

・ Si vous souhaitez appuyer sur le bouton radio

browser.find_elements_by_xpath("//input[@value='***']")[0].click()

Pour ***, recherchez la valeur du bouton radio que vous souhaitez saisir avec les outils de développement et saisissez-la.

・ Lors de la saisie de la zone de texte

browser.find_elements_by_xpath("//input[@class='***']")[0].click()

Pour ***, recherchez la classe du bouton radio que vous souhaitez saisir avec les outils de développement et saisissez-la.

Dans browser.find_elements_by_xpath (), ceux qui s'appliquent au xpath spécifié sont listés et obtenus, donc le premier est [0], le second est [1] et le troisième est [2]. .. Par conséquent, si vous souhaitez mettre un caractère dans la deuxième zone de texte, [0] devient [1].

Appuyez sur le bouton d'envoi lorsque vous avez terminé. Entrez le code.

browser.find_element_by_xpath("//button[@title='Envoyer']").click())

Fermez enfin l'onglet du navigateur et quittez

browser.quit()

Code source complet

from selenium import webdriver
from time import sleep

email = 'Entrez par vous-même'
password = 'Entrez par vous-même'
url = 'Entrez par vous-même'


browser = webdriver.Chrome()
browser.get(url)

browser.find_element_by_id('i0116').send_keys(email)
browser.find_element_by_id('idSIButton9').click()
sleep(3)

browser.find_element_by_id('i0118').send_keys(password)
browser.find_element_by_id('idSIButton9').click()
sleep(3)

browser.find_element_by_id('idSIButton9').click()
sleep(3)


#Cela dépend de ce que vous souhaitez saisir dans les formulaires.
browser.find_elements_by_xpath("//input[@value='Entrez par vous-même']")[0].click()
browser.find_elements_by_xpath("//input[@value='Entrez par vous-même']")[0].click()
sleep(3)

browser.find_element_by_xpath("//button[@title='Entrez par vous-même']").click()
sleep(10)

browser.quit()

4. Spécifiez l'heure avec cron

Je ne loue pas de serveur de location et il fonctionne automatiquement en utilisant cron sur mac.

Déverrouillez la sécurité et la confidentialité dans les préférences du système et sélectionnez / usr / sbin / crn dans + pour l'ouvrir.

image.png

Ouvrez un terminal et tapez «crontab -e». ・ Lors de l'exécution à 6 heures tous les jours (* signifie tout exécuter)

#Minutes, heures, jours, mois, jours, python Le répertoire dans lequel il est enregistré (assurez-vous de saisir le chemin absolu)
  0   6    *  *   *   python form_send

Puisque cron ne fonctionne pas en état de veille, configurez-le pour qu'il ne se réveille qu'une minute avant cela. Sélectionnez un programme dans Économie d'énergie dans les Préférences Système et entrez l'heure. image.png (Si vous voulez l'exécuter plusieurs fois par jour et ne le démarrer qu'alors, vous pouvez utiliser pmset)

5. Post-scriptum

J'ai écrit un article pour la première fois. Écrire un article a demandé beaucoup de patience, mais je pense que c'était bon pour améliorer la compréhension et tuer le temps. J'ai créé une réponse automatique pour les formulaires Microsoft avec un motif assez impur, mais je serais très heureux si vous pouviez l'utiliser pour un bon. Merci d'avoir lu jusqu'au bout.

Recommended Posts

Comment soumettre automatiquement des formulaires Microsoft à l'aide de python (version Mac)
Comment changer la version de Python
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Comment installer Python à l'aide d'Anaconda
Comment obtenir la version Python
Comment préparer l'environnement de développement Python [Mac]
Comment effacer Python 2.x sur Mac.
Comment vérifier la version d'opencv avec python
[Version 2020] Comment installer Python3 sur EC2 d'AWS
Comment spécifier la version TLS dans les requêtes python
Comment installer Python
Comment installer python
Comment créer un environnement pour utiliser plusieurs versions de Python sur un Mac
Comment configurer un environnement Python à l'aide de pyenv
Comment créer un package Python à l'aide de VS Code
Comment récupérer plusieurs tableaux à l'aide de slice en python.
[Introduction à Python] Comment arrêter la boucle en utilisant break?
Comment exécuter une commande à l'aide d'un sous-processus en Python
[Introduction à Python] Comment écrire des instructions répétitives à l'aide d'instructions for
[2020.8 dernière] Comment installer Python
Comment installer Python [Windows]
python3: Comment utiliser la bouteille (2)
Comment installer Tabpy 1.0 (version 2020-01)
[Python] Comment utiliser la liste 1
Comment mettre à jour Tkinter de Python vers la version 8.6
Publier sur Twitter en utilisant Python
Comment utiliser Python Argparse
Commencez à Selenium en utilisant python
Changer la version de python à l'aide de pyenv
Mettez à jour le python que vous aviez sur votre Mac à 3.7-> 3.8
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Comment exécuter Notepad ++ Python
Introduction à Python (version Python APG4b)
Comment développer en Python
[python] Comment juger scalaire
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Utiliser OpenCV avec Python @Mac
Comment utiliser les octets Python
[Circuit x Python] Comment résoudre symboliquement les équations de circuit en utilisant sympy
Comment transloquer un tableau à deux dimensions en utilisant uniquement python [Note]
Comment mettre à jour le blog FC2, etc. en utilisant XMLRPC avec Python
Comment trouver la somme / somme cumulée pour chaque groupe à l'aide de DataFrame dans Spark [version Python]
[Python] Comment FFT des données mp3
Python: comment utiliser async avec
Comment reconstruire l'environnement python à partir de pyenv dans un environnement Mac (El Capitan)
[Python] Comment utiliser la série Pandas
Comment collecter des images en Python
Comment utiliser les requêtes (bibliothèque Python)
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Comment utiliser SQLite en Python
[Introduction à Python] Comment analyser JSON
Comment installer OpenCV sur Mac
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Comment démarrer avec Python