J'essaie d'obtenir le contenu HTML du nœud enfant avec lxml et xpath en Python. Comme indiqué dans le code ci-dessous, je veux trouver le contenu html de chacun des nœuds de produit. At-il des méthodes comme product.html?
productGrids = tree.xpath("//div[@class='name']/parent::*")
for product in productGrids:
print #html content of product
from lxml import etree
print(etree.tostring(root, pretty_print=True))
vous pouvez voir plus d'exemples ici: http://lxml.de/tutorial.html
Je pense que vous souhaitez utiliser la méthode tostring()
:
from lxml import etree
tree = etree.fromstring('<html><head><title>foo</title></head><body><div class="name"><p>foo</p></div><div class="name"><ul><li>bar</li></ul></div></body></html>')
for elem in tree.xpath("//div[@class='name']"):
# pretty_print ensures that it is nicely formatted.
print etree.tostring(elem, pretty_print=True)
Vous pouvez utiliser product.text_content()
Fonction simple pour obtenir innerHTML ou innerXML
.
Essayez-le directement https://pyfiddle.io/fiddle/631aa049-2785-4c58-bf82-eff4e2f8bedb/
.
fonction
def innerXML(elem):
elemName = elem.xpath('name(/*)')
resultStr = ''
for e in elem.xpath('/'+ elemName + '/node()'):
if(isinstance(e, str) ):
resultStr = resultStr + ''
else:
resultStr = resultStr + etree.tostring(e, encoding='unicode')
return resultStr
invocation
XMLElem = etree.fromstring("<div>I am<name>Jhon <last.name> Corner</last.name></name>.I work as <job>software engineer</job><end meta='bio' />.</div>")
print(innerXML(XMLElem))
.
Logique derrière
tostring