Python: c'est si facile que ça de créer un scrapper ?
Par ChatGPT, relecture AMO
Nota: dans la suite de ce post, les réponses sont celles de ChatGPT après qu’il ait eu connaissance d’un script de base.
Pour créer un programme Python qui scrappera le contenu de la page Web spécifiée et vous alerte en cas de changement, vous pouvez suivre ces étapes :
-
Installez les bibliothèques nécessaires : Assurez-vous d’avoir installé les bibliothèques
requests
,beautifulsoup4
, etsmtplib
pour effectuer les requêtes HTTP, parser le contenu HTML, et envoyer des emails respectivement. Vous pouvez les installer en utilisantpip
:pip install requests beautifulsoup4
-
Écrivez le code pour le scraping : Utilisez la bibliothèque
requests
pour récupérer le contenu HTML de la page Web, puisbeautifulsoup4
pour extraire les informations pertinentes que vous souhaitez comparer pour détecter les changements. -
Mettez en place l’envoi d’email : Utilisez la bibliothèque
smtplib
pour envoyer un email d’alerte lorsque des changements sont détectés.
Voici un exemple de code pour vous aider à démarrer :
import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText
def get_page_content(url):
response = requests.get(url)
if response.status_code == 200:
return response.content
else:
raise Exception("Failed to fetch the page content.")
def extract_info_from_page(content):
soup = BeautifulSoup(content, 'html.parser')
# Ici, ajoutez le code pour extraire les informations pertinentes de la page,
# qui sont susceptibles de changer, par exemple, des balises spécifiques,
# des classes CSS, etc.
# Retournez les informations extraites sous forme de texte ou d'une autre structure de données.
def send_email_alert(message):
# Configurez les détails de votre serveur SMTP et les informations d'authentification.
smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_username = 'votre_adresse_email@example.com'
smtp_password = 'votre_mot_de_passe'
sender_email = 'votre_adresse_email@example.com'
receiver_email = 'adresse_email_destinataire@example.com'
msg = MIMEText(message)
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = 'Alerte : Le contenu de la page a changé !'
try:
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_username, smtp_password)
server.sendmail(sender_email, receiver_email, msg.as_string())
print("Email d'alerte envoyé avec succès.")
except Exception as e:
print(f"Erreur lors de l'envoi de l'email : {e}")
if __name__ == "__main__":
url = "https://www.urssaf.fr/portail/home/taux-et-baremes/plafonds.html"
try:
previous_content = get_page_content(url)
except Exception as e:
print(f"Erreur lors de la récupération du contenu de la page : {e}")
while True:
try:
current_content = get_page_content(url)
except Exception as e:
print(f"Erreur lors de la récupération du contenu de la page : {e}")
if current_content != previous_content:
message = "Le contenu de la page a changé ! Allez vérifier : " + url
send_email_alert(message)
break # Arrête la boucle après avoir envoyé l'alerte
# Attendez un certain intervalle de temps avant de vérifier à nouveau.
# Par exemple, toutes les heures.
time.sleep(3600)
Notez que la partie où vous extrayez les informations spécifiques dépendra de la structure HTML de la page cible. Vous devrez inspecter la page pour trouver les balises et les classes qui contiennent les données dont vous avez besoin.