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.
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
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. 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()
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()
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.
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.
(Si vous voulez l'exécuter plusieurs fois par jour et ne le démarrer qu'alors, vous pouvez utiliser pmset
)
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.