Juil
28
2023

Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python


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.

Articles similaires

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

Laissez un commentaire