2010-08-17 11 views
1

j'utilise beautifulsoup pour analyser un site Webbeautifulsoup python ajouter des balises supplémentaires fin

request = urllib2.Request(url) 
    response = urllib2.urlopen(request) 
    soup = BeautifulSoup.BeautifulSoup(response) 

Je l'utilise pour traverser une table. Le problème que je rencontre est que BS ajoute une balise de fin supplémentaire pour la table dans le HTML qui n'existe pas, que j'ai vérifié avec: print soup.prettify(). Ainsi, l'une des balises td est supprimée de la table et je ne peux pas la sélectionner.

+1

Pouvez-vous afficher la structure essentielle du code html qui ne fonctionne pas? –

+0

aimerait une réponse à cela aussi bien. dans mon cas, il semble que BS ajoute des tags qui ne sont * pas * dans le code source de la page. –

Répondre

1

Que diriez-vous de rechercher directement chaque balise au lieu d'essayer de traverser la table?

for td in soup.find("td"): 
     ... 

il n'est pas inhabituel de trouver le tag tbody imbriqué dans une table automatiquement lorsqu'il n'est pas dans le code. Soit vous pouvez coder pour cela ou tout simplement aller directement à la balise tr ou td.

+0

C'est une bonne idée et j'ai essayé ça. Quand je cours le code ci-dessus il renvoie la table entière pas chaque individu td. Je pense que BS se brise sur ces pages horrible html ... bot sûr que faire à ce sujet si – imns

+0

2 choses, vérifiez la version que vous utilisez. Si vous utilisez la version 3.1, revenez à 3.0 (http://www.crummy.com/software/BeautifulSoup/3.1-problems.html) sinon essayez lxml, à mon humble avis, c'est un meilleur analyseur général que Soup. – ebt