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
2
A
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" />
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.
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? –
@ 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. –
D'accord, maintenant j'ai essayé et il convertit les attributs en minuscules. –