excel - 使用 Selenium VBA 从网页复制表格
问题描述
我正在尝试将此网页(https://www.rosterresource.com/mlb-schedule-grid/)中的图表复制到 Excel 中的工作表中。我一直在使用带有 Selenium 参考的 VBA 来访问网页并尝试通过 Xpath 或 ID 查找元素,但是我在查找图表时遇到了问题。我认为我要复制的图表位于不同的框架中,但我不熟悉如何正确获取它。
Dim driver As Selenium.ChromeDriver
Set driver = New Selenium.ChromeDriver
Dim url As String
url = "https://www.rosterresource.com/mlb-schedule-grid/"
driver.Start "chrome", "https://www.google.com/"
driver.Wait 1000
driver.Get url
driver.Wait 5000
Element = driver.FindElementByXPath(???).Attribute("innerText") 'this is where I struggle
driver.Close
Range("a1").Value = Element
解决方案
您可以使用以下语法选择 iFrame 并切换到它们:
Option Explicit
Public Sub GetTable()
Dim d As WebDriver, a As Object
Set d = New ChromeDriver
Const URL = "https://www.rosterresource.com/mlb-schedule-grid/"
With d
.Start "Chrome"
.Get URL
Set a = .FindElementsByTag("iframe")(1)
.SwitchToFrame 0
End With
End Sub
但是,可以通过以下方式获得指向包含数据的电子表格的直接链接:
.FindElementByCss("iframe").Attribute("src")
推荐阅读
- python - 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster
- javascript - 使用 NodeJS 完成 AJAX 请求时页面重新加载
- javascript - 在 Javascript(节点 js)中,如何知道特定字符串在其他字符串中?
- authentication - 为 Kapacitor 启用身份验证会破坏 Chronograf
- ios - 获取后在 react-native-webview 中显示 PDF。仅限 iOS
- javascript - Angular onChange 未在 datachange 上触发
- azure - Azure - 仅允许访问部署在 Azure App Service 上的单个国家/地区的网站
- google-cloud-platform - Google Cloud 网络管理员与网络用户权限差距说明
- javascript - 为什么我不能在 React 组件中使用 const/let?
- javascript - 如何 .js 文件 $ajax 代码定义'$未定义错误''?