【发布时间】:2021-09-26 18:27:43
【问题描述】:
下面的代码直到几天前才运行到 url,找到表格并将表格的内容导入 Excel。然后我做了一些其他的格式化来让表格进入适当的行和列。但是现在这段代码找不到表。我不完全理解“Set a = .FindElementsByTag("iframe")(2)”和“.SwitchToFrame 1”。但我的一般理解是,这部分代码切换到不同的框架,然后提取内部 url,然后用于从表中获取数据。
我需要帮助确定要更改的内容才能获得预期的“url2”,即“https://docs.google.com/spreadsheets/d/e/2PACX-1vT__QigQ9cJV03ohUkeK5dgQjfAbJqxrc68bXh9Is1WFST8wjxMxDy7hYUCFHynqRvInsANUI22GdIM/pubhtml?gid=817544912&single=true&chrome=false&widget=false&headers=false”url。 *注意:我不使用这个 docs.google 网址,因为我不知道这个网址是否会定期更改。我知道 rosterresource.com/mlb-roster-grid 网址将保持一致。
我尝试更改“Set a = .FindElementsByTag("iframe")(2)”和“.SwitchToFrame 1”的一些整数,但我这样做是盲目的,因为我不熟悉这种艺术代码。
Sub GetRRgrid()
'"Selenium type library" is a reference used
Dim d As WebDriver, a As Object
Set d = New ChromeDriver
Const url = "https://www.rosterresource.com/mlb-roster-grid/"
With d
.Start "Chrome"
.Get url
Set a = .FindElementsByTag("iframe")(2)
.SwitchToFrame 1
url2 = .FindElementByCss("iframe").Attribute("src")
.Get url2
ele = .FindElementByTag("tbody").Attribute("innerText")
d.Close
End With
' other processes t format the data after it is imported
end sub
````
【问题讨论】:
-
因此,将
d.FindElementsByTag("iframe")想象为对象的集合。更具体地说,它是 HTML 文档中所有<iframe></iframe>元素的集合。要访问这些元素中的每一个,请使用 (i) 符号。所以 d.FindElementsByTag("iframe")(2) 是这个集合中的第三个对象。 -
你知道我应该使用哪个 (i) 符号吗? .attribute("src") 应该等于 "docs.google.com/spreadsheets/d/e/…"
标签: excel vba selenium iframe web-scraping