【问题标题】:How to formulate an Xpath expression to get an attribute from a child node?如何制定 Xpath 表达式以从子节点获取属性?
【发布时间】:2014-06-22 12:32:56
【问题描述】:

想要制定一个 Xpath 表达式,可以从 rect 标签中获取属性“Style”。 我写了下面的代码,但是没有用。

另外,在获得 Style 属性后,我只想要 rgb();文本。我该怎么做?

谢谢

   for element in driver.find_elements_by_css_selector("#workload-analysis-chart > div > svg > g"):
            style = element.get_attribute('style')
            print style

【问题讨论】:

  • 什么是参考xml?

标签: python html selenium xpath web-scraping


【解决方案1】:

您可以通过xpath 使用find_element_by_xpath() 找到元素,然后使用get_attribute() 方法获取style 属性:

rect = driver.find_element_by_xpath('//div[@id="workload-analysis-chart"]/div/svg/g/g[@data-selected="true"]/rect')
print rect.get_attribute('style')

【讨论】:

    【解决方案2】:

    表达式不是xpath,而是一个css选择器。

    如下更改表达式将打印样式属性:

    for rect in root.cssselect('#workload-analysis-chart > div > svg > g > g > rect'):
        style = rect.get('style')
        print style
    

    【讨论】:

      【解决方案3】:

      尝试使用 lxml 它有很好的 xpath 功能

      root = lxml.html.fromstring(pagesource)
      #get rect with data-eid="10"
      rect = root.xpath('//rect[@data-eid="10"]')
      r = rect[0] #^returned list of rects
      style = r.get("default-fill")
      

      【讨论】:

        猜你喜欢
        • 2017-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-30
        • 1970-01-01
        • 2014-06-19
        相关资源
        最近更新 更多