获取DOM树中元素的XPath?

时间:2014-06-02 15:48:29

标签: python dom selenium xpath lxml

我在 python 中使用 lxml 实现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本身在Locating Elements方面非常强大:

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

答案 1 :(得分:0)

我总是找到使用"美丽的汤"使这类事情变得更容易。

http://lxml.de/elementsoup.html

这里已经有很多类似的问题,请尝试:

retrieve links from web page using python and BeautifulSoup