Comment convertir un tableau HTML en tableau en python
J'ai un document html, et je veux tirer les tableaux de ce document et de les restituer sous la forme de tableaux. Je nous vois 2 fonctions, une qui trouve toutes les tables html dans un document, et une deuxième qui se transforme des tableaux html en 2-dimensions des tableaux.
Quelque chose comme ceci:
htmltables = get_tables(htmldocument)
for table in htmltables:
array=make_array(table)
Il y a 2 captures:
1. Le nombre de tables varie au jour le jour
2. Les tables ont toutes sortes de bizarre supplémentaires de mise en forme, comme le gras et le clignotement des balises, au hasard jeté dans.
Merci!
source d'informationauteur Zach | 2010-05-20
Vous devez vous connecter pour publier un commentaire.
Les Pandas pouvez extraire toutes les tables dans votre code html à une liste de dataframes droit sorti de la boîte, ce qui évite d'avoir à analyser la page vous-même (de réinventer la roue). Un DataFrame est un puissant type de tableau en 2 dimensions.
Je recommande de continuer à travailler avec les données via des Pandas car c'est un outil formidable, mais vous pouvez aussi les convertir vers d'autres formats si vous préférez (liste, dictionnaire, fichier csv, etc.).
Exemple
Obtenir le contenu html directement depuis le web au lieu de partir d'un fichier n'aurait besoin que d'une légère modification:
Utilisation BeautifulSoup (je recommande
3.0.8
). Trouver toutes les tables est trivial:Cependant, en Python, un tableau est de dimension 1 et contraint à assez élémentaire types d'éléments (des entiers, des flotteurs, des que élémentaire). Donc, il n'y a pas moyen de tirer un tableau HTML dans un Python
array
.Peut-être vous voulez dire un Python
list
à la place? C'est aussi de dimension 1, mais tout peut être un élément, vous pouvez donc avoir une liste de listes (une sous-liste partr
tag, j'imagine, contenant un article partd
tag).Qui donnerait:
Cela peut ne pas encore être tout à fait ce que vous voulez (ne sautez pas de commentaires HTML, les éléments de la sous-listes sont des chaînes unicode et pas de chaînes d'octets, etc), mais il devrait être facile à régler.
Un +1 pour la question-le demandeur et une autre pour le dieu de Python.
Voulais essayer cet exemple à l'aide de lxml et sélecteurs CSS.
Oui, c'est essentiellement le même que Alex exemple: