[Python] Exécutons le module régulièrement en utilisant schedule

Présentation du module de planification, qui est utile pour exécuter le module sur une base régulière. schedule est un module pratique lorsque vous souhaitez effectuer le même travail à intervalles réguliers (toutes les quelques minutes, heures, jours). C'est un module pratique pour collecter des informations par web scraping.

Cette fois, après avoir résumé l'utilisation de base du module de planification, nous présenterons un module qui exécute le scraping régulièrement comme exemple d'implémentation.

planifier l'installation

Le module de planification est disponible avec la commande pip. Il sera installé en exécutant la commande suivante sur l'invite de commande.

pip install schedule

Exemple de code

sample_schedule.py


import schedule
import time

#Fonction de tâche d'exécution
def job():
    print("exécution du travail")


#Enregistrer l'exécution des tâches toutes les minutes
schedule.every(1).minutes.do(job)

#Enregistrer l'exécution du travail toutes les heures
schedule.every(1).hours.do(job)

#AM11:Enregistrer l'exécution du travail 00
schedule.every().day.at("11:00").do(job)

#Enregistrer l'exécution du travail le dimanche
schedule.every().sunday.do(job)

#Mercredi 13:Enregistrer 15 exécutions de travaux
schedule.every().wednesday.at("13:15").do(job)

#Surveiller l'exécution du travail, exécuter la fonction du travail à l'heure spécifiée
while True:
    schedule.run_pending()
    time.sleep(1)

Ceci est un exemple de module de planification. La fonction de tâche est exécutée à certains intervalles et devient un module dans lequel "exécution de tâche" est affichée. schedule.every``` est une description pour enregistrer le travail à exécuter et l'intervalle d'exécution. Il peut être exécuté toutes les quelques minutes, toutes les quelques heures, ou même à une date et une heure spécifiques.

#Exécuter le travail toutes les minutes
schedule.every(1).minutes.do(job)

Le travail enregistré avec le schedule.every``` ci-dessus sera exécuté avec le schedule.run_pending () '' suivant. Si vous appelez simplement schedule.run_pending () '' '' normalement, le module se terminera une fois le travail exécuté, vous devez donc le mettre dans un état de boucle infinie ** avec une instruction ** while. .. En le définissant sur l'état de règle infinie, il est possible de continuer à effectuer le même traitement à intervalles réguliers.

while True:
    schedule.run_pending()
    time.sleep(1)

Collectez régulièrement des actualités Yahoo en utilisant le calendrier

En utilisant le module de planification introduit cette fois, j'ai créé un module qui effectue régulièrement du scraping. C'est un module qui accède à Yahoo News toutes les heures et obtient le titre et l'URL de l'actualité.

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:

#Accéder aux sujets Yahoo et collecter des informations sur l'actualité
        bs = BeautifulSoup(html.read(), 'lxml')
        newsList = bs.find('div', {'class': 'topicsListAllMain'}).find_all('a')

#Obtenez le titre et l'URL de l'actualité à partir de la liste obtenue et affichez-le
        for news in newsList:
            if re.match('^(https://)', news.attrs['href']):
                print(news.get_text())
                print(news.attrs['href'])

#Exécuter le travail toutes les heures
schedule.every(1).hours.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

Résumé

Cette fois, j'ai introduit un module de planification qui peut exécuter des tâches irrégulières à intervalles réguliers. Je l'utilise souvent principalement pour le scraping, mais je pense qu'il a un large éventail d'utilisations car c'est un module qui peut également être utilisé pour l'exécution régulière de travaux.

Les références

Exécuter des tâches dans la bibliothèque de planification Python Exécutons régulièrement des scripts Python en utilisant la bibliothèque de planification

Recommended Posts

[Python] Exécutons le module régulièrement en utilisant schedule
Essayez d'utiliser le module Python Cmd
J'ai essayé d'utiliser le module Datetime de Python
Essayez d'utiliser le module de collections (ChainMap) de python3
Faisons un module pour Python en utilisant SWIG
Utilisons la version Python du module API Confluence.
Écrire des données dans KINTONE à l'aide du module de requêtes Python
À propos du module Python venv
Afficher à l'aide du module python du backend mobile Nifty Cloud
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
Voyons voir l'utilisation de l'entrée en python
Extraire le fichier targz en utilisant python
Affichons la carte en utilisant Basemap
Maîtriser le module lowref en Python
J'ai essayé d'utiliser Kwant, un module python pour le calcul du transport quantique
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
[Blender x Python] Maîtrisons le matériel !!
Essayez d'utiliser l'API Kraken avec Python
Derrière le flyer: utiliser Docker avec Python
Passez le chemin du module python importé
Tweet à l'aide de l'API Twitter en Python
Créer un graphique à l'aide du module Sympy
Lisons le fichier RINEX avec Python ①
Travailler avec OpenStack à l'aide du SDK Python
Résumons le standard de codage Python PEP8 (1)
[Python] Importez le module d'un niveau supérieur
Redémarrez le routeur en utilisant Python, Selenium, PhantomJS
Vérifiez le chemin du module importé Python
Résumons le standard de codage Python PEP8 (2)
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Exécutez la commande COPY en utilisant Psycopg de python
Installez le module Python dans n'importe quel répertoire
python setup.py tester le code en utilisant le multiprocessus
Exécuter du SQL brut avec redash à l'aide de la source de données Python et afficher le résultat
Imprimons un PDF avec python en utilisant foxit reader et spécifions l'imprimante en silence!
Introduction à Python Préparons l'environnement de développement
Agréger les résultats des tests à l'aide de la bibliothèque Python QualityForward
vprof - J'ai essayé d'utiliser le profileur pour Python
Analysons le journal de validation git en Python!
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Ecrire un serveur TCP à l'aide du module SocketServer
Essayez d'utiliser le framework Web Python Tornado Partie 1
Jugons les émotions à l'aide de l'API Emotion en Python
Encodage de caractères lors de l'utilisation du module csv de python 2.7.3
Passer des valeurs entre les pages à l'aide du module cgi Python 3.5
Spécification de la destination de chargement du module avec GAE python
Pré-traiter l'index en Python à l'aide de ScriptUpdateProcessor de Solr
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
[Python] Une compréhension approximative du module de journalisation
Essayez d'utiliser le framework Web Python Tornado Partie 2
Utilisez le module Python nghttp2 de Homebrew de Python de pyenv
Essayez d'utiliser l'API DropBox Core avec Python