2010-07-30 14 views
0

Ok donc je peux référencer correctement ma table dans une page html comme ceci:forme -> Tableau -> tr en utilisant findAll successifs appelle

form = soup.findAll('form')[1] 

table = form.findAll('table', width="79%") # returns 1 table, doing a print shows table with rows 

tr = table.findAll('tr') 

Je reçois une erreur:

objet ResultSet n'a pas attribut findAll.

Pourquoi cela ne fonctionne-t-il pas? J'ai utilisé la sortie de form.findAll pour obtenir la table, et la table (en utilisant print) a effectivement des lignes de table, etc.

Répondre

3

Comme dans la question précédente, findAll retourne une liste.

Ainsi,

table = form.findAll('table', width='79%')[0] 
tr = table.findAll(...) 

extrait le premier. Comme précédemment, vérifiez que votre liste n'est pas vide en premier.

+0

Mais j'ai fait un len (table) et il était 1? Je suppose que je dois encore faire [0] ok je comprends. – Blankman

+0

A droite, len (table) vous donne juste la longueur. Une fois que vous savez que c'est> 0, extraire l'élément avec l'index ([0] obtient le premier). – ars

+0

@Blankman: cool. :) – ars