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 ?
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>
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>
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>
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>
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>
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!