【问题标题】:SVG chart scraping by collecting data points on the interactive chart通过在交互式图表上收集数据点来抓取 SVG 图表
【发布时间】:2019-05-13 13:43:03
【问题描述】:

您好,我正在尝试从附加的 html 中抓取数据点。我需要 svg 图表的点来抓取内容。我尝试如下-

dots_css = "div#MBcharts-0.MBcharts-container svg g.MBcharts-grid path"
dots_list = driver.find_elements_by_css_selector(dots_css)

我得到了数据点但问题是有两个元素具有相同的类名并且没有 id(如“g.MBcharts-grid”的屏幕截图所示。 虽然我只需要第一次出现的路径中的数据点。 使用 Python 和 selenium 进行网页抓取

【问题讨论】:

  • 请使用sn-p工具通过edit分享HTML,以便我们复制粘贴进行测试。
  • @QHarr 肯定会记住这一点

标签: python python-3.x selenium-webdriver web-scraping css-selectors


【解决方案1】:

如果您需要 CSS 选择器的第一个匹配项,您可以直接切换到 .find_element_by_css_selector()element 之后没有 s):

desired_path = driver.find_element_by_css_selector(dots_css)

或者,first-child selector 也可以完成这项工作,因为匹配元素是同级元素:

dots_css = "div#MBcharts-0.MBcharts-container svg g.MBcharts-grid:first-child path"
dots_list = driver.find_element_by_css_selector(dots_css)

【讨论】:

  • path 的 html 内容中的所有数据点都用于通过悬停动作获取值。如果我将其保留为 .find_element_by_css_selector(),则会收到错误 TypeError:“WebElement”类型的对象没有 len()。此外,如果我使用第一个子方法,我在打印时得到 Found 0 个数据点(“Found {0} data points”.format(len(dots_list)))
猜你喜欢
  • 2014-06-08
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2021-04-05
相关资源
最近更新 更多