Einführung in das Zeitplanmodul, das nützlich ist, um das Modul regelmäßig auszuführen. Der Zeitplan ist ein praktisches Modul, wenn Sie dieselbe Arbeit in regelmäßigen Abständen (alle paar Minuten, Stunden, Tage) ausführen möchten. Es ist ein praktisches Modul zum Sammeln von Informationen durch Web Scraping.
Nachdem wir die grundlegende Verwendung des Zeitplanmoduls zusammengefasst haben, werden wir dieses Mal ein Modul vorstellen, das das Scraping regelmäßig als Implementierungsbeispiel ausführt.
Das Zeitplanmodul ist mit dem Befehl pip verfügbar. Die Installation erfolgt durch Ausführen des folgenden Befehls an der Eingabeaufforderung.
pip install schedule
sample_schedule.py
import schedule
import time
#Ausführungsjobfunktion
def job():
print("Jobausführung")
#Registrieren Sie die Jobausführung jede Minute
schedule.every(1).minutes.do(job)
#Registrieren Sie die Jobausführung stündlich
schedule.every(1).hours.do(job)
#AM11:Registrieren Sie die Jobausführung 00
schedule.every().day.at("11:00").do(job)
#Registrieren Sie die Jobausführung am Sonntag
schedule.every().sunday.do(job)
#Mittwoch 13:Registrieren Sie 15 Jobläufe
schedule.every().wednesday.at("13:15").do(job)
#Überwachen Sie die Jobausführung und führen Sie die Jobfunktion zum angegebenen Zeitpunkt aus
while True:
schedule.run_pending()
time.sleep(1)
Dies ist ein Beispielmodul für den Zeitplan. Die Jobfunktion wird in bestimmten Intervallen ausgeführt und wird zu einem Modul, in dem "Jobausführung" angezeigt wird. `` `Schedule.every``` ist eine Beschreibung zum Registrieren des auszuführenden Jobs und des Ausführungsintervalls. Es kann alle paar Minuten, alle paar Stunden oder sogar zu einem bestimmten Datum und einer bestimmten Uhrzeit ausgeführt werden.
#Führen Sie den Job jede Minute aus
schedule.every(1).minutes.do(job)
Der mit dem obigen `sched.every``` registrierte Job wird mit dem folgenden`
sched.run_pending () `ausgeführt. Wenn Sie normalerweise nur
sched.run_pending ()
`` aufrufen, wird das Modul beendet, sobald der Job ausgeführt wird. Sie müssen ihn daher in einen Endlosschleifenzustand ** mit einer ** while-Anweisung versetzen. .. Wenn Sie den Status "Unendliche Regel" festlegen, können Sie die gleiche Verarbeitung in regelmäßigen Abständen fortsetzen.
while True:
schedule.run_pending()
time.sleep(1)
Mit dem diesmal eingeführten Zeitplanmodul habe ich ein Modul erstellt, das regelmäßig Scraping durchführt. Es ist ein Modul, das stündlich auf Yahoo News zugreift und den Titel und die URL der Nachrichten abruft.
scraping_schedule.py
from urllib.request import urlopen
from urllib.error import HTTPError
from urllib.error import URLError
from bs4 import BeautifulSoup
import re
import schedule
import time
def job():
try:
html = urlopen('https://news.yahoo.co.jp/topics')
except HTTPError as e:
print(e)
except URLError as e:
print(e)
else:
#Greifen Sie auf Yahoo-Themen zu und sammeln Sie Nachrichteninformationen
bs = BeautifulSoup(html.read(), 'lxml')
newsList = bs.find('div', {'class': 'topicsListAllMain'}).find_all('a')
#Holen Sie sich den Nachrichtentitel und die URL aus der erhaltenen Liste und zeigen Sie sie an
for news in newsList:
if re.match('^(https://)', news.attrs['href']):
print(news.get_text())
print(news.attrs['href'])
#Führen Sie den Job jede Stunde aus
schedule.every(1).hours.do(job)
while True:
schedule.run_pending()
time.sleep(1)
Dieses Mal habe ich ein Zeitplanmodul eingeführt, mit dem unregelmäßige Jobs in regelmäßigen Abständen ausgeführt werden können. Ich benutze es oft hauptsächlich zum Schaben, aber ich denke, es hat eine breite Palette von Verwendungsmöglichkeiten, da es ein Modul ist, das auch für die reguläre Arbeitsausführung verwendet werden kann.
Jobs in Python Schedule Library ausführen Lassen Sie uns Python-Skripte regelmäßig mithilfe der Zeitplanbibliothek ausführen
Recommended Posts