首页 文章

获取DOM树中元素的XPath?

提问于
浏览
2

我在 python 中使用 lxml 实现HTML和XML解析 . 设置像这样的解析器

parser = lxml.etree.HTMLParser()

并从HTML源返回一个树(字符串)

tree = lxml.etree.fromstring(html, parser).getroottree() # Returns a XML tree

根据 lxml 文档,这应该返回 DOM tree (XML)

我想找到某些带有标签的元素,例如“a”,“div”,“span”等 .

如何使用标签名称获取所有可能元素的 XPath

EDIT :我实际上正在开发一个AJAX爬虫,所以我需要Selenium来点击某些可以改变DOM状态的元素 . 我将HTML源发送到lxml进行分析 .

例如,在列表中采用默认元素

["a", "button", "li", "nav", "ol", "span", "ul", "header", "footer", "section"]

我需要获取上述元素的xpath,以便我可以将它们传递给Selenium以进行单击,以及其他事件触发器 .

2 回答

  • 0

    你真的不需要使用单独的解析器, 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
    
  • 2

    我总是发现使用“美丽的汤”使这种事情变得更容易 .

    http://lxml.de/elementsoup.html

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

    retrieve links from web page using python and BeautifulSoup

相关问题