2010-07-28 15 views
2

Je souhaite capturer des tags avec BeautifulSoup: certains tags <p>, l'étiquette <title>, certains tags <meta>. Mais je veux les attraper indépendamment de leur cas; Je sais que certains sites font méta comme ceci: <META> et je veux être en mesure d'attraper cela. J'ai remarqué que BeautifulSoup est sensible à la casse par défaut. Comment puis-je attraper ces tags d'une manière non sensible à la casse?Obtention de BeautifulSoup pour intercepter les tags de manière non sensible à la casse

Répondre

0

Vous pouvez utiliser soup.findAll qui doit correspondre insensible à la casse:

import BeautifulSoup 

html = '''<html> 
<head> 
<meta name="description" content="Free Web tutorials on HTML, CSS, XML" /> 
<META name="keywords" content="HTML, CSS, XML" /> 
<title>Test</title> 
</head> 
<body> 
</body> 
</html>''' 

soup = BeautifulSoup.BeautifulSoup(html) 
for x in soup.findAll('meta'): 
    print x 

Résultat:

 
<meta name="description" content="Free Web tutorials on HTML, CSS, XML" /> 
<meta name="keywords" content="HTML, CSS, XML" /> 
+0

Ah, alors BeautifulSoup convertit toutes les balises en minuscules? Qu'en est-il des attributs? Et est-ce que cela signifie que je peux aussi utiliser 'find' au lieu de' findAll' et il serait toujours insensible à la casse? –

+0

@ cool-RR: Oui, la recherche fonctionne de la même façon que findAll. La sensibilité à la casse dépend de ce que vous faites. –

+0

D'accord, maintenant j'ai essayé et il convertit les attributs en minuscules. –

1

BeautifulSoup standardise l'arbre d'analyse sur l'entrée. Il convertit les balises en minuscules. Vous n'avez rien à craindre de l'OMI.