【发布时间】:2021-02-19 11:39:47
【问题描述】:
我正在尝试在 python 中使用 selenium 从 <circle> 元素中获取 cx 和 cy 的位置,但我还没有找到任何方法。这就是网站和 HTML 的样子:
有人知道如何从图片中<g> 内的所有圆圈中获取所有cx 和cy 值吗?
【问题讨论】:
标签: python selenium web-scraping xpath
我正在尝试在 python 中使用 selenium 从 <circle> 元素中获取 cx 和 cy 的位置,但我还没有找到任何方法。这就是网站和 HTML 的样子:
有人知道如何从图片中<g> 内的所有圆圈中获取所有cx 和cy 值吗?
【问题讨论】:
标签: python selenium web-scraping xpath
您可以使用get_attribute
cx,cy = [],[]
circle = driver.find_elements_by_tag_name('circle')
for i in circle:
cx.append(i.get_attribute('cx'))
cy.append(i.get_attribute('cy'))
【讨论】:
借自"Extract value of attribute node via XPath":
driver.find_element_by_xpath("path/to/circle/element/@cx")
和
driver.find_element_by_xpath"path/to/circle/element/@cy")
更新:对评论的回应
要选择所有 cx 属性,请使用以下内容:
path_to_circles = "//div[@class='g-act'/div/div/div/svg/g/g/circle"
cx_values = driver.find_element_by_xpath(path_to_circles + "/@cx").extract()
cy_values = driver.find_element_by_xpath(path_to_circles + "/@cy").extract()
那么您可能还想将值从字符串更改为浮点数:
cx_values = [float(cx) for cx in cx_values]
cy_values = [float(cy) for cy in cy_values]
并且可能将它们变成对列表(即 [(50.23, 115.36), ...]):
values_from_graph = list(zip(cx_values, cy_values))
请注意,我没有测试代码,所以请原谅我的任何拼写错误:)
【讨论】: