2009-11-08 8 views
1

J'essaie de compter le nombre de balises dans la 'soupe' à partir d'un résultat beautifulsoup. J'aimerais utiliser une expression régulière mais j'ai des problèmes. Le code Ive essayé est comme suit:Tags correspondants dans BeautifulSoup

reg_exp_tag = re.compile("<[^>*>") 
tags = re.findall(reg_exp_tag, soup(cast as a string)) 

mais re ne permettra pas reg_exp_tag, ce qui donne une fin inattendue d'erreur d'expression régulière.

Toute aide serait grandement appréciée!

Merci

+0

Pourquoi sur * earth * vous trompez-vous d'HTML avec une regex cassée quand vous l'avez déjà analysé correctement avec BeautifulSoup? Sérieusement, que diable? – bobince

Répondre

1

ne devrait-il être "<[^>]*>" au lieu de "<[^>*>"?

(la classe doit être fermée avec un ])

+0

Merci beaucoup! Été regarder fixement si longtemps ne pas voir les fautes de frappe simples! – db90

+0

Hehe, quand le programmeur a décidé de résoudre un problème avec regex, il finit avec 2 problèmes. – Kugel

4

Si vous avez déjà analysé le code HTML avec BeautifulSoup, pourquoi l'analyser à nouveau? Essayez ceci:

num_tags = len(soup.findAll()) 
+1

+1 no regex peut éventuellement analyser HTML correctement, c'est pourquoi la plupart des gens utilisent BeautifulSoup. BeautifulSoup plus sérialisation à HTML plus regex est juste un sac de mal! – bobince