使用 Python 和 Selenium 抓取图形上的悬停

2024-03-15

我正在尝试从中抓取数据http://fuelinsights.gasbuddy.com/Charts http://fuelinsights.gasbuddy.com/Charts使用Python和Selenium。困难的部分是,只有当鼠标悬停在折线图上的一个点上时,数据才会出现。目前,我的问题是无法创建所有悬停在对象上的列表。到目前为止我的代码如下:

from selenium import webdriver as web
from selenium.webdriver.common.action_chains import ActionChains

driver = web.Chrome('driver path')

driver.get('http://fuelinsights.gasbuddy.com/Charts')

test= driver.find_elements_by_xpath('//*[@class="highcharts-markers"]')

print(test)

`

这给了我 test=[]。以前,我在所有抓取项目中都使用 beautifulsoup,但我重做了一些以前的项目,以确保我了解 Selenium 的工作原理并且没有出现问题。

如果有人可以帮助我解决这个问题,以便我可以创建一个项目列表,我可以使用 ActionChains 将鼠标悬停在该列表上并从中提取价格和日期,我将不胜感激。

谢谢你!

****编辑**** 为了澄清这一点,我查看了许多有关 SVG 和 g 元素以及 Highcharts 的其他帖子,但我仍然缺乏解决此问题的方法。我尝试了许多 Xpath(以及其他 find_elements_by 选项),但只能得出两个结果:(1)Xpath 有效,但不包含任何元素,或(2)InvalidSelectorException 表明我无法找到具有 xpath 表达式的元素。我相信这归结为简单地错误地指定了我的 Xpath,但我不知道如何找到正确的 Xpath。


您不能使用上面提到的 Xpath 来定位 svg 标记内的元素。

可用于创建悬停对象列表的 Xpath 是:

//*[name()='svg']//*[name()='g' and @class='highcharts-markers']/*[name()='path']

我写了一个java程序用于获取所有工具提示元素的文本。您可以使用该逻辑并编写相应的Python代码:

1. 获取工具提示元素列表

 List <WebElement> highChartElements= driver.findElements(By.xpath("//*[name()='svg']//*[name()='g' and @class='highcharts-markers']/*[name()='path']"));

2. 遍历列表并使用操作类来移动和单击所有工具提示元素

3. 获取工具提示元素的文本。

for(WebElement element:highChartElements){
        Actions action = new Actions(driver);
        action.moveToElement(element).click().perform();
        Thread.sleep(3000);
        List<WebElement> highChartToolTipTextElements= driver.findElements(By.xpath("//*[name()='svg']//*[name()='g' and @class='highcharts-tooltip']/*[name()='text']/*[name()='tspan']"));
        for(WebElement toolTipElement:highChartToolTipTextElements){
            System.out.println("The text for the elements is"+toolTipElement.getText());
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 和 Selenium 抓取图形上的悬停 的相关文章

随机推荐

  • 使用 PHPExcel 循环工作表

    我正在使用 PHPExcel 库读取 Excel 文件并对其进行处理 我想循环浏览每个工作表 我检查了文档 我所能找到的只是更改活动工作表索引或仅加载指定的工作表 如何循环浏览所有工作表 感谢您的任何帮助 这是文档的循环示例 供参考
  • C++ 隐式转换运算符

    我正在尝试在 C 中找到一个很好的继承解决方案 我有一个矩形类和一个正方形类 Square 类不能公开继承 Rectangle 因为它不能完全满足矩形的要求 例如 矩形可以单独设置其宽度和高度 这对于正方形来说当然是不可能的 所以 我的困境
  • ORA-01797: 该运算符后面必须跟有 ANY 或 ALL 错误

    当我执行查询时 select from file log f where F DCP SRCE FILENM FK in ABC DEF and F TRANS DT gt to date 08 25 2017 mm dd yyyy and
  • WPF:特定输入文本框(用于电话号码等)

    我不知道这叫什么 但我确信它有一个名字 而且它已经被做过多次了 我有一些文本框 理想情况下只允许特定输入 例如电话号码 银行帐号等内容的框 例如 电话号码输入应采用以下格式 000 000 0000 但我也希望它接受不带区号的号码 例如 0
  • 如何在 Web 服务安装期间更改默认虚拟目录名称?

    我有一个使用 VS2008 创建的 C Web 服务 我有一个部署项目 它创建用于部署的 MSI 是否有某个设置可以更改安装过程中提示用户的默认虚拟目录 我不想更改网络服务的名称来执行此操作 但这不是右键单击安装项目的简单情况吗 selec
  • AWS 您的账户尚未准备好发布消息

    我刚刚使用我的控制台帐户注册了 AWS 论坛 都好 我第一次发帖 我得到 Your account is not ready for posting messages yet 我没有广告拦截器 所以我没有找到任何其他解决方案 任何帮助表示赞
  • 具有多列 data.frames 的两个列表的条件匹配

    我有一个 data frames 列表 每个 data frames 中有多个列 每个 data frame 都有相同的结构 此外 我还有另一个包含多个 data frames 的列表 假设这是两个列表 firstlist lt list
  • Gnu Parallel:嵌套并行

    是否可以在由 gnu parallel 生成的脚本的多次运行中调用 gnu parallel 我有一个运行了 100 秒的 python 脚本顺序的迭代 并且在每次迭代中的某个位置 并行计算 4 个值 使用 gnu 并行 现在我想再次使用
  • 如何在ipython笔记本中设置matplotlib图形默认大小?

    我使用 ipython Notebook pylab inline 来启动 ipython Notebook 显示的 matplotlib 图形尺寸对我来说太大了 我必须手动调整它 如何设置单元格中显示的图形的默认大小 对我来说就像一个魅力
  • 不允许使用字符串类型(在“id”处,值为“@id/bAdd”)

    我收到一条错误消息不允许使用字符串类型 在 id 处 值为 id bAdd 我已经清理了该项目 早些时候一切都正常 我不知道发生了什么 导致了这个错误
  • 如何读取txt文件并将其保存在html中的javascript数组中

    有很多解决方案 但我在 html 网页上的 javascript 中发现很少或根本没有 我的html 文件所在的位置有一个名为sample txt 的数据文件 我的目标是将 txt 文件加载到数组中 该数组可用于创建表格并显示在 html
  • 如何将Entity框架中的DbSet转换为ObjectQuery

    我正在使用 Code First 方法 并遇到一个需要将 DbSet 转换为 ObjectQuery 的问题 这就是我为转换所做的 ObjectContext objectContext IObjectContextAdapter db O
  • 在 C# 中为 0x80000000 == 2147483648,但在 VB.NET 中则不然

    In C 0x80000000 2147483648 outputs True 在 VB NET 中 H80000000 2147483648 outputs False 这怎么可能 这与语言背后的历史有关 C 始终支持无符号整数 您使用的
  • DB2 时间戳选择语句

    我正在尝试运行一个简单的查询 该查询根据时间戳获取数据 如下所示 SELECT FROM
  • C#:无法以编程方式填充 DataGridView

    我没有使用设计器 而是尝试以编程方式填充我放在 Winform 上的 DataGridView 当我查看调试器下的表格时 它具有正确的列和行数 问题是网格在我的表单上显示为空的灰色框 当我通过 VS 2008 Designer 将网格绑定到
  • 禁用 WPF 标签加速键(缺少文本下划线)

    我正在设置 ContentLabel 的值包含下划线的字符串 第一个下划线被解释为加速键 不更改底层字符串 通过替换所有 with 有没有办法禁用标签的加速器 如果您使用 TextBlock 作为标签的内容 则其文本将不会吸收下划线
  • 循环和递归之间的实际区别是什么

    我目前正在使用 PHP 工作 因此这个示例将使用 PHP 但问题适用于多种语言 我正在和我的一个朋友一起做这个项目 和往常一样 我们遇到了一个大问题 现在我们俩都回家了 无法解决问题 那天晚上我们都找到了解决办法 只是我用了循环来解决问题
  • Swift - 在带有可选参数的泛型函数中以 Nil 作为参数

    我正在尝试创建一个可以接受可选参数的通用函数 这是我到目前为止所拥有的 func somethingGeneric
  • 健全性检查:作为主键浮动?

    我正在使用旧的 sql server 2000 数据库 将其中的一些信息与我正在构建的新应用程序混合在一起 我注意到几个表中的一些主键是浮点数而不是任何类型的整数 它们不是外键并且都是唯一的 我想不出有任何理由让任何人想要让他们的唯一主键
  • 使用 Python 和 Selenium 抓取图形上的悬停

    我正在尝试从中抓取数据http fuelinsights gasbuddy com Charts http fuelinsights gasbuddy com Charts使用Python和Selenium 困难的部分是 只有当鼠标悬停在折