Maison > développement back-end > Tutoriel Python > Comment pouvez-vous extraire des données d'un tableau HTML à l'aide de BeautifulSoup en Python, en gérant spécifiquement des complexités telles que des lignes supplémentaires et des éléments d'entrée ?

Comment pouvez-vous extraire des données d'un tableau HTML à l'aide de BeautifulSoup en Python, en gérant spécifiquement des complexités telles que des lignes supplémentaires et des éléments d'entrée ?

Mary-Kate Olsen
Libérer: 2024-10-26 23:08:31
original
429 Les gens l'ont consulté

How can you extract data from an HTML table using BeautifulSoup in Python, specifically handling complexities such as extra rows and input elements?

Extraire des données d'une table à l'aide de BeautifulSoup en Python

Lors de l'analyse de documents HTML, la possibilité d'extraire des données de tables est une exigence courante. BeautifulSoup, une bibliothèque Python populaire pour le web scraping, fournit un moyen puissant d'analyser le HTML et d'accéder à son contenu.

Analyser une table avec BeautifulSoup

Pour illustrer le processus de En analysant une table avec BeautifulSoup, prenons l'exemple du "NYC Parking Ticket Parser". La réponse HTML pour cette page est assez complexe et l'objectif est d'extraire les données du tableau des éléments de campagne qui contiennent des informations sur chaque ticket.

Pour y parvenir, nous devons d'abord identifier le tableau dans le HTML. réponse en utilisant sa classe unique :

<code class="python">table = soup.find("table", { "class" : "lineItemsTable" })</code>
Copier après la connexion

Une fois la table localisée, nous pouvons parcourir les lignes pour extraire les données :

<code class="python">for row in table.findAll("tr"):
    cells = row.findAll("td")
    print cells</code>
Copier après la connexion

Cependant, cette approche ne fournirait que le HTML éléments pour chaque ligne du tableau. Pour obtenir le contenu réel du texte, nous devons extraire le texte de chaque cellule :

<code class="python">data = []
for row in table.findAll("tr"):
    cols = row.findAll("td")
    cols = [ele.text.strip() for ele in cols]
    data.append([ele for ele in cols if ele])</code>
Copier après la connexion

Ce code parcourt les lignes du tableau, extrait le texte des cellules et supprime tout espace de début ou de fin. Le résultat est une liste de listes, où chaque liste interne représente une ligne du tableau.

Gestion des complexités

Dans l'exemple fourni, la dernière ligne du tableau contient le montant du paiement, qui ne fait pas partie des données du tableau. Pour gérer cela, nous pouvons filtrer les lignes contenant moins d'un certain nombre d'éléments :

<code class="python">data = [row for row in data if len(row) >= 7]</code>
Copier après la connexion

De plus, la dernière colonne de chaque ligne contient une zone de texte de saisie. Nous pouvons gérer cela en extrayant le texte avant l'élément d'entrée :

<code class="python">data = [[col.split()[0] if col.find("input") else col for col in row] for row in data]</code>
Copier après la connexion

Conclusion

Avec ces modifications, vous pouvez extraire efficacement les données du tableau des éléments de campagne en utilisant BeautifulSoup en Python. N'oubliez pas d'adapter le code à vos besoins spécifiques et de gérer toute complexité supplémentaire qui pourrait survenir.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal