Fluffy Fluffy - 1 year ago 243
Python Question

How to get path of an element in lxml?

I'm searching in a HTML document using XPath from lxml in python. How can I get the path to a certain element? Here's the example from ruby nokogiri:

page.xpath('//text()').each do |textnode|
path = textnode.path
puts path

print for example '/html/body/div/div[1]/div[1]/p/text()[1]' and this is the string I want to get in python.

Answer Source

Use getpath from ElementTree objects.

from lxml import etree

root = etree.fromstring('<foo><bar>Data</bar><bar><baz>data</baz>'

tree = etree.ElementTree(root)
for e in root.iter():
    print tree.getpath(e)


Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download