Lorsque vous gérez un grand parc informatique, il est essentiel de garder une trace des informations importantes de chaque ordinateur, telles que la description, la date de début de garantie et la date de fin de garantie. Les ordinateurs Terra sont largement utilisés dans de nombreuses entreprises, mais récupérer ces informations manuellement peut être fastidieux et chronophage. Heureusement, avec Python et les bibliothèques Selenium et BeautifulSoup, vous pouvez automatiser ce processus pour récupérer facilement les informations d’un ordinateur Terra à partir d’une liste de numéros de série.
Prérequis: Avant de commencer, assurez-vous d’avoir installé les bibliothèques Python requises:
- Selenium: Pour l’automatisation du navigateur web.
- BeautifulSoup: Pour l’analyse du contenu HTML.
Etape 1: Configuration de l’environnement Tout d’abord, assurez-vous d’avoir installé Python sur votre système. Vous pouvez installer les bibliothèques requises à l’aide de pip:
bash
pip install selenium beautifulsoup4
Etape 2: Le script Python pour récupérer les informations Le code Python ci-dessous récupère les informations d’un ordinateur Terra à partir d’un numéro de série donné. Ce script utilise la bibliothèque Selenium pour automatiser l’accès au site Web de Terra et la bibliothèque BeautifulSoup pour extraire les données du tableau résultant.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import time
import csv
def get_serial_info(serial_number):
try:
# URL de la page à accéder
url = 'https://www.wortmann.de/en-gb/profile/snsearch.aspx'
# Options du navigateur
firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument('-headless') # Exécution en mode headless (sans afficher la fenêtre du navigateur)
# Instancier le navigateur Firefox avec les options
driver = webdriver.Firefox(options=firefox_options)
# Accéder à la page
driver.get(url)
# Attendre un court instant pour que la page se charge complètement
time.sleep(2)
# Remplir le champ de texte avec la nouvelle valeur (numéro de série)
nouvelle_valeur = serial_number
input_field = driver.find_element(By.ID, 'ctl00_ctl00_ctl00_SiteContent_SiteContent_SiteContent_textSerialNo')
input_field.clear()
input_field.send_keys(nouvelle_valeur)
# Soumettre le formulaire en appuyant sur la touche Enter
input_field.send_keys(Keys.RETURN)
# Attendre un court instant pour que la requête soit effectuée et la page mise à jour
time.sleep(5) # Augmenter le temps d'attente à 5 secondes pour s'assurer que la page est complètement chargée
# Récupérer le contenu HTML de la page résultante
page_html = driver.page_source
# Utiliser BeautifulSoup pour extraire les données du tableau
soup = BeautifulSoup(page_html, 'html.parser')
table = soup.find('table', {'id': 'ctl00_ctl00_ctl00_SiteContent_SiteContent_SiteContent_DetailsViewProductInfo'})
# Vérifier si le tableau a été trouvé avant d'essayer d'extraire les données
if table:
# Extraire les données du tableau
data = {}
for row in table.find_all('tr'):
cols = row.find_all('td')
if len(cols) == 2:
key = cols[0].text.strip()
value = cols[1].text.strip()
data[key] = value
print(data) # Afficher les données extraites pour le débogage
return data
else:
print("Le tableau avec l'ID spécifié n'a pas été trouvé.")
return None
except Exception as e:
print("Une erreur s'est produite lors de l'exécution de Selenium:", e)
return None
finally:
# Fermer le navigateur une fois que l'extraction est terminée ou en cas d'erreur
if 'driver' in locals():
driver.quit()
# Chemin vers le fichier CSV source contenant les numéros de série
csv_source_file = '/chemin/vers/votre/fichier/source.csv'
# Chemin vers le fichier CSV résultant qui contiendra les informations récupérées
csv_result_file = '/chemin/vers/votre/fichier/resultat.csv'
# Définir les noms de colonnes pour le fichier CSV résultat
fieldnames = ['name', 'serial', 'Description', 'Warranty starting date', 'Warranty ending date']
# Ouvrir le fichier source CSV en mode lecture et le fichier résultat CSV en mode écriture
with open(csv_source_file, 'r', encoding='utf-8') as source_file, \
open(csv_result_file, 'w', encoding='utf-8', newline='') as result_file:
# Créer un objet DictReader pour lire le fichier CSV source
csv_reader = csv.DictReader(source_file)
# Créer un objet DictWriter pour écrire dans le fichier CSV résultat avec les noms de colonnes corrects
csv_writer = csv.DictWriter(result_file, fieldnames=fieldnames)
csv_writer.writeheader()
# Parcourir chaque ligne du fichier source CSV
for row in csv_reader:
# Récupérer le numéro de série à partir du fichier CSV source
serial_number = row['serial']
name = row['name']
if serial_number != "NULL":
print(serial_number) # Afficher le numéro de série pour le débogage
# Obtenir les informations supplémentaires à partir du site web en utilisant le script
data = get_serial_info(serial_number)
if data is not None:
# Vérifier si les informations spécifiques que nous recherchons sont présentes dans data
if 'Description' in data and 'Warranty starting date' in data and 'Warranty ending date' in data:
# Récupérer les informations spécifiques à ajouter dans le fichier CSV résultat
description = data['Description']
warranty_start_date = data['Warranty starting date']
warranty_end_date = data['Warranty ending date']
# Écrire la ligne mise à jour dans le fichier CSV résultat
csv_writer.writerow({'name': name,
'serial': serial_number,
'Description': description,
'Warranty starting date': warranty_start_date,
'Warranty ending date': warranty_end_date})
print("Terminé ! Les informations ont été récupérées et enregistrées dans le fichier CSV résultat.")
Assurez-vous de remplacer “/chemin/vers/votre/fichier/source.csv” et “/chemin/vers/votre/fichier/resultat.csv” par les chemins appropriés de votre système où se trouvent les fichiers CSV source et résultat. Ce code récupérera les informations des ordinateurs Terra en utilisant les numéros de série fournis dans le fichier source et sauvegardera les résultats dans le fichier résultat avec les colonnes appropriées.
Etape 3: Préparer la liste de numéros de série Avant d’exécuter le script, assurez-vous d’avoir une liste de numéros de série des ordinateurs Terra que vous souhaitez récupérer. Vous pouvez stocker ces numéros de série dans un fichier CSV, où chaque ligne contient le nom et le numéro de série d’un ordinateur.
Etape 4: Exécution du script et sauvegarde des résultats Une fois que vous avez préparé la liste des numéros de série dans un fichier CSV, exécutez le script Python. Le script parcourra chaque numéro de série, récupérera les informations correspondantes sur le site Web de Terra, et sauvegardera les résultats dans un nouveau fichier CSV avec les colonnes appropriées pour les informations telles que le nom, le numéro de série, la description, la date de début de garantie et la date de fin de garantie.
En utilisant Python, Selenium et BeautifulSoup, vous pouvez automatiser le processus de récupération des informations des ordinateurs Terra à partir d’une liste de numéros de série. Cela vous permettra de gagner du temps et d’assurer une gestion plus efficace de votre parc informatique. N’hésitez pas à adapter le script en fonction de vos besoins spécifiques et à l’utiliser pour d’autres tâches d’automatisation web similaires.
The post Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python first appeared on Croc-Informatique.fr.