Vor kurzem musste ich aufgrund des Einflusses von "are" in meiner Situation jeden Morgen früh Microsoft Forms einreichen. Da ich es als "umständlich" betrachtete, entschied ich mich, die automatische Antwort von Forms zu implementieren, während ich Python Web Scraping lernte.
Installieren Sie Selen mit der Eingabeaufforderung.
pip install selenium
Installieren Sie den Webdrider mit Homebrew. Wenn Sie kein Homebrew haben, installieren Sie bitte zuerst Homebrew.
brew install chormedriver
Importieren Sie den Web-Treiber aus Selen. Importieren Sie den Schlaf, um ihn zu verarbeiten, und halten Sie ihn für Sekunden an.
form_send
from selenium import webdriver
from time import sleep
Es gibt ein Modul in Selen selbst, das auf die Verarbeitung wartet, aber als ich es versuchte, funktionierte der Vorgang nach dem Seitenübergang nicht, sodass ich den Vorgang mit sleep () beenden werde. In den folgenden Fällen wird die Verarbeitung für 10 Sekunden gestoppt.
sleep(10)
Starten Sie den Webbrowser und geben Sie die Formular-URL in *** von url = '***' ein.
form_send
browser = webdriver.Chrome()
url = '***'
browser.get(url)
Wenn Sie die URL der Formulare eingeben, werden Sie zum Anmeldebildschirm weitergeleitet. Aktivieren Sie daher das Element des Textfelds, in das Sie Ihre E-Mail-Adresse eingeben. Öffnen Sie die Entwicklertools mit ⌘ + Option + i und drücken Sie die Markierung unten links oben, um das Element anzugeben. Bei der Prüfung verwendet Microsoft Forms die ID von i0116. (Es hat sich möglicherweise geändert, daher wird empfohlen, es zum Zeitpunkt der Erstellung zu überprüfen.) Sie können ein Element aus der ID mit browser.find_element_by_id () angeben. Sie können das Textfeld mit .send_keys (E-Mail) ausfüllen. Bitte geben Sie Ihre eigene E-Mail-Adresse an. Suchen Sie die Schaltflächen-ID auf die gleiche Weise. Klicken Sie mit .click () auf das Element.
form_send
browser.find_element_by_id('i0116').send_keys(email)
browser.find_element_by_id('idSIButton9').click()
sleep(3)
Rufen Sie den Passwortbildschirm und den Bestätigungsbildschirm für die Anmeldewartung auf dieselbe Weise auf.
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)
Dann gelangen Sie zum Antwortbildschirm für Formulare.
Da id im Antwortteil von Formularen nicht angegeben ist, geben Sie xpath an.
・ Wenn Sie das Optionsfeld drücken möchten
browser.find_elements_by_xpath("//input[@value='***']")[0].click()
Suchen Sie für *** den Wert des Optionsfelds, das Sie mit den Entwicklertools eingeben möchten, und geben Sie ihn ein.
・ Bei der Eingabe eines Textfelds
browser.find_elements_by_xpath("//input[@class='***']")[0].click()
Suchen Sie für *** die Klasse des Optionsfelds, das Sie mit den Entwicklertools eingeben möchten, und geben Sie es ein.
In browser.find_elements_by_xpath () werden diejenigen aufgelistet und abgerufen, die für den angegebenen xpath gelten. Der erste ist [0], der zweite ist [1] und der dritte ist [2]. .. Wenn Sie also ein Zeichen in das zweite Textfeld einfügen möchten, wird [0] zu [1].
Drücken Sie die Senden-Taste, wenn Sie fertig sind. Geben Sie den Code ein.
browser.find_element_by_xpath("//button[@title='Senden']").click())
Schließen Sie zum Schluss die Browser-Registerkarte und beenden Sie das Programm
browser.quit()
from selenium import webdriver
from time import sleep
email = 'Treten Sie selbst ein'
password = 'Treten Sie selbst ein'
url = 'Treten Sie selbst ein'
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)
#Dies hängt davon ab, was Sie in Formulare eingeben möchten.
browser.find_elements_by_xpath("//input[@value='Treten Sie selbst ein']")[0].click()
browser.find_elements_by_xpath("//input[@value='Treten Sie selbst ein']")[0].click()
sleep(3)
browser.find_element_by_xpath("//button[@title='Treten Sie selbst ein']").click()
sleep(10)
browser.quit()
Ich miete keinen Mietserver und er läuft automatisch mit cron auf dem Mac.
Entsperren Sie die Sicherheit und den Datenschutz in den Systemeinstellungen und wählen Sie "/ usr / sbin / crn" von + aus, um sie zu öffnen.
Öffnen Sie ein Terminal und geben Sie "crontab -e" ein. ・ Bei täglicher Ausführung um 6 Uhr (* bedeutet, alle auszuführen)
#Minuten, Stunden, Tage, Monate, Tage, Python Das Verzeichnis, in dem es gespeichert ist (geben Sie unbedingt den absoluten Pfad ein).
0 6 * * * python form_send
Da cron nicht im Ruhezustand läuft, stellen Sie es so ein, dass es vorher nur 1 Minute lang aufwacht.
Wählen Sie in den Systemeinstellungen unter Energieeinsparung einen Zeitplan aus und geben Sie die Uhrzeit ein.
(Wenn Sie es mehrmals am Tag ausführen und erst dann starten möchten, können Sie pmset
verwenden.)
Ich habe zum ersten Mal einen Artikel geschrieben. Das Schreiben eines Artikels erforderte viel Geduld, aber ich denke, es war gut, um das Verständnis zu verbessern und die Zeit totzuschlagen. Ich habe eine automatische Antwort für Microsoft-Formulare mit einem ziemlich unreinen Motiv erstellt, aber ich würde mich sehr freuen, wenn Sie sie für eine gute verwenden könnten. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts