BeautifulSoup n'est pas une bibliothèque DOM en soi (elle n'implémente pas les API DOM). Pour compliquer les choses, vous utilisez des espaces de noms dans ce fragment xml. Pour analyser ce morceau spécifique de XML, vous utiliseriez BeautifulSoup comme suit:
from BeautifulSoup import BeautifulSoup
xml = """<xml>
<web:Web>
<web:Total>4000</web:Total>
<web:Offset>0</web:Offset>
</web:Web>
</xml>"""
doc = BeautifulSoup(xml)
print doc.find('web:total').string
print doc.find('web:offset').string
Si vous n'utilisez pas namespaces, le code pourrait ressembler à ceci: La clé ici est
from BeautifulSoup import BeautifulSoup
xml = """<xml>
<Web>
<Total>4000</Total>
<Offset>0</Offset>
</Web>
</xml>"""
doc = BeautifulSoup(xml)
print doc.xml.web.total.string
print doc.xml.web.offset.string
que BeautifulSoup ne sait rien (ou ne s'en soucie pas) sur les espaces de noms. Ainsi, web:Web
est traité comme une étiquette web:web
au lieu d'une étiquette Web
appartenant à l'espace de noms web
. Alors que BeautifulSoup ajoute web:web
au dictionnaire d'éléments xml, la syntaxe python ne reconnaît pas web:web
comme identifiant unique.
Vous pouvez en apprendre plus à ce sujet en lisant le documentation.
merci! fonctionne parfaitement maintenant. Je suis toujours confus quant à ce qu'il faut donner à find() ..et ces définitions d'espace de noms et la façon dont elles sont écrites me déroutent beaucoup ... tout lien pour effacer tout cela serait apprécié! – demos
Juste le lien de documentation que je vous ai déjà donné ... et beaucoup d'expérimentation. –
'AttributeError: l'objet 'NoneType' n'a pas d'attribut 'chaîne' –