web-dev-qa-db-fra.com

BeautifulSoup: récupère le contenu d'une table spécifique

Mon aéroport local bloque honteusement les utilisateurs sans IE, et a l'air horrible. Je veux écrire un script Python qui obtiendrait le contenu des pages Arrivée et Départ toutes les quelques minutes, et les montrer de manière plus lisible.

Mes outils de choix sont mécaniser pour tricher sur le site pour croire que j'utilise IE, et BeautifulSoup pour analyser la page pour obtenir le tableau de données des vols.

Très honnêtement, je me suis perdu dans la documentation BeautifulSoup, et je ne comprends pas comment obtenir la table (dont je connais le titre) à partir du document entier, et comment obtenir une liste des lignes de cette table.

Des idées?

18
Adam Matan

Ce n'est pas le code spécifique dont vous avez besoin, juste une démonstration de la façon de travailler avec BeautifulSoup. Il trouve la table dont l'id est "Table1" et obtient tous ses éléments tr.

html = urllib2.urlopen(url).read()
bs = BeautifulSoup(html)
table = bs.find(lambda tag: tag.name=='table' and tag.has_attr('id') and tag['id']=="Table1") 
rows = table.findAll(lambda tag: tag.name=='tr')
35
Ofri Raviv
soup = BeautifulSoup(HTML)

# the first argument to find tells it what tag to search for
# the second you can pass a dict of attr->value pairs to filter
# results that match the first tag
table = soup.find( "table", {"title":"TheTitle"} )

rows=list()
for row in table.findAll("tr"):
   rows.append(row)

# now rows contains each tr in the table (as a BeautifulSoup object)
# and you can search them to pull out the times
9
goggin13