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.
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
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)
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)
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.
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