获取DOM树中元素的XPath?
我在用lxml这个库在python里解析HTML和XML。首先,我设置了一个解析器,像这样:
parser = lxml.etree.HTMLParser()
然后从HTML源代码(字符串)中返回一个树形结构:
tree = lxml.etree.fromstring(html, parser).getroottree() # Returns a XML tree
根据lxml的文档,这应该返回一个DOM树(XML)。
我想找到一些特定的元素,它们的标签可能是“a”、“div”、“span”等等。
我该如何获取所有可能元素的XPath,也就是它们的路径呢?
补充说明:其实我在开发一个AJAX爬虫,所以我需要用Selenium来点击某些元素,这些元素可能会改变DOM的状态。我把HTML源代码发送给lxml进行分析。
举个例子,我有一个默认元素的列表,像这样:
["a", "button", "li", "nav", "ol", "span", "ul", "header", "footer", "section"]
我需要获取上面这些元素的XPath,这样我就可以把它们传给Selenium去点击,或者触发其他事件。
2 个回答
0
2
其实你不需要使用一个单独的解析器,selenium
本身在 定位元素
方面就已经很强大了:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('url_goes_here')
list_of_elements = ["a", "button", "li", "nav", "ol", "span", "ul", "header", "footer", "section"]
for tag_name in list_of_elements:
for element in browser.find_elements_by_tag_name(tag_name):
print element