L'extraction de colonnes sélectionnées à partir d'une table à l'aide de BeautifulSoup
Je suis en train d'extraire la première et troisième colonnes de ce tableau de données à l'aide de BeautifulSoup. En regardant le code HTML de la première colonne a une <th>
tag. L'autre colonne d'intérêt est que <td>
tag. En tout cas, tout ce que j'ai pu sortir une liste de la colonne avec les balises. Mais, je veux juste le texte.
table
est déjà une liste donc je ne peux pas utiliser findAll(text=True)
. Je ne suis pas sûr de la façon d'obtenir la liste de la première colonne dans une autre forme.
from BeautifulSoup import BeautifulSoup
from sys import argv
import re
filename = argv[1] #get HTML file as a string
html_doc = ''.join(open(filename,'r').readlines())
soup = BeautifulSoup(html_doc)
table = soup.findAll('table')[0].tbody.th.findAll('th') #The relevant table is the first one
print table
Je ne crois pas que vous serez en mesure d'obtenir la totalité de la colonne comme la représentation HTML est à base de lignes (peut être mal). J'imagine que vous pouvez approximative de quelque chose en parcourant les lignes et en tirant la colonne correspondante, en l'ajoutant à une structure de données de votre choix.
J'ai commencé par essayer, mais ne pouvait toujours pas retirer le texte. Je vais mettre à jour ma réponse à inclure la partie. Peut-être que c'est un moyen plus facile d'aller.
J'ai commencé par essayer, mais ne pouvait toujours pas retirer le texte. Je vais mettre à jour ma réponse à inclure la partie. Peut-être que c'est un moyen plus facile d'aller.
OriginalL'auteur mac389 | 2012-10-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce code:
Comme vous pouvez le voir, le code se connecte à l'url et obtient le html, et le BeautifulSoup trouve le premier tableau, puis tous les " tr " et sélectionne la première colonne, qui est le 'th', et la troisième colonne, qui est une 'td'.
OriginalL'auteur jonhkr
En plus de @jonhkr réponse je pensais que je poste une autre solution je suis venu avec.
Contrairement à jonhkr réponse, qui appelle dans la page web, le mien suppose que vous l'avez enregistrer sur votre ordinateur et de le passer comme argument de ligne de commande. Par exemple:
OriginalL'auteur mac389
vous pouvez essayer ce code aussi
OriginalL'auteur KUSHA B K