[Python] Lassen Sie uns das Modul regelmäßig nach Zeitplan ausführen

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.

Planen Sie die Installation

Das Zeitplanmodul ist mit dem Befehl pip verfügbar. Die Installation erfolgt durch Ausführen des folgenden Befehls an der Eingabeaufforderung.

pip install schedule

Beispielcode

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)

Sammeln Sie regelmäßig Yahoo-Nachrichten nach Zeitplan

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)

Zusammenfassung

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.

Verweise

Jobs in Python Schedule Library ausführen Lassen Sie uns Python-Skripte regelmäßig mithilfe der Zeitplanbibliothek ausführen

Recommended Posts

[Python] Lassen Sie uns das Modul regelmäßig nach Zeitplan ausführen
Versuchen Sie es mit dem Python Cmd-Modul
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Verwenden wir die Python-Version des Confluence-API-Moduls.
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
Über das Python-Modul venv
Anzeigen mit dem Python-Modul des mobilen Nifty Cloud-Backends
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
Mal sehen, wie man Eingaben in Python verwendet
Extrahieren Sie die Targz-Datei mit Python
Lassen Sie uns die Karte mit der Grundkarte anzeigen
Beherrsche das schwache Ref-Modul in Python
Ich habe versucht, Kwant zu verwenden, ein Python-Modul für die Quantentransportberechnung
Führen Sie Python-Code unter C ++ aus (mit Boost.Python).
[Blender x Python] Lass uns das Material beherrschen !!
Versuchen Sie, die Kraken-API mit Python zu verwenden
Hinter dem Flyer: Docker mit Python verwenden
Übergeben Sie den Pfad des importierten Python-Moduls
Tweet mit der Twitter-API in Python
Erstellen Sie mit dem Sympy-Modul ein Diagramm
Lesen wir die RINEX-Datei mit Python ①
Arbeiten mit OpenStack mit dem Python SDK
Fassen wir den Python-Codierungsstandard PEP8 (1) zusammen.
[Python] Importieren Sie das Modul eine Ebene höher
Starten Sie den Router mit Python, Selenium, PhantomJS neu
Überprüfen Sie den Pfad des importierten Python-Moduls
Fassen wir den Python-Codierungsstandard PEP8 (2) zusammen.
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Führen Sie den Befehl COPY mit Psycopg of Python aus
Installieren Sie das Python-Modul in einem beliebigen Verzeichnis
python setup.py testet den Code mit Multiprocess
Führen Sie Raw SQL mit Redash unter Verwendung der Python-Datenquelle aus und zeigen Sie das Ergebnis an
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Aggregieren Sie die Testergebnisse mithilfe der QualityForward Python-Bibliothek
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Lassen Sie uns das Git-Commit-Protokoll in Python analysieren!
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Python: Versuchen Sie, die Benutzeroberfläche von Pythonista 3 auf dem iPad zu verwenden
Schreiben Sie einen TCP-Server mit dem SocketServer-Modul
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
Zeichenkodierung bei Verwendung des CSV-Moduls von Python 2.7.3
Übergeben Sie Werte zwischen Seiten mit dem Python 3.5-CGI-Modul
Angeben des Modulladeziels mit GAE-Python
Verarbeiten Sie den Index in Python mit dem ScriptUpdateProcessor von Solr vor
Lassen Sie den Summer mit Python auf Raspberry Pi 3 erklingen!
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Verwenden Sie das nghttp2 Python-Modul von Homebrew aus pyenvs Python
Versuchen Sie, die DropBox Core-API mit Python zu verwenden