如何拉动<;tspan>;VBA webscraping中HTML代码中的元素
我正在尝试使用HTML webscraping和VBA从网页中提取数据。我在其他网站上也取得了成功,但这一个网站的数据在标记为tspan的代码行中,我似乎无法从中获取数据 HTML代码如下所示(抱歉代码太长,不确定什么是相关的,什么是不相关的): 我还尝试了类名在svg代码行中显示为“未定义”的情况。不管怎样,我都会犯错误 编辑:我现在已经尝试了嵌套的GetElementsByTagName,但仍然出现错误如何拉动<;tspan>;VBA webscraping中HTML代码中的元素,html,excel,vba,web-scraping,Html,Excel,Vba,Web Scraping,我正在尝试使用HTML webscraping和VBA从网页中提取数据。我在其他网站上也取得了成功,但这一个网站的数据在标记为tspan的代码行中,我似乎无法从中获取数据 HTML代码如下所示(抱歉代码太长,不确定什么是相关的,什么是不相关的): 我还尝试了类名在svg代码行中显示为“未定义”的情况。不管怎样,我都会犯错误 编辑:我现在已经尝试了嵌套的GetElementsByTagName,但仍然出现错误 text=IE.document.GetElementsByClassname("C")
text=IE.document.GetElementsByClassname("C")(0).GetElementsByTagname("svg")(0).GetElementsByTagname("polygon")(0).GetElementsByTagname("text")(0).GetElementsByTagname("tspan")(0).innertext
解决了。类名有一个下划线,实际上是2个下划线很难说有什么区别。嵌套的getelementsbytagname成功了。或者,您也可以使用querySelector方法
text = IE.document.querySelector("tspan[text-anchor='middle']").innerText
希望这有帮助 这里有一个更直接、更快捷的方法
Option Explicit
Public Sub GetData()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate2 "https://www.tipranks.com/stocks/mmm/stock-analysis"
While .Busy Or .readyState < 4: DoEvents: Wend
Do 'could use timed loop here to handle infinite looping risk
Set elem = .document.querySelectorAll("tspan")
Loop While elem.Length = 0
Debug.Print elem.item(0).innerText
.Quit
End With
End Sub
选项显式
公共子GetData()
模糊的物体
设置ie=CreateObject(“InternetExplorer.Application”)
与ie
.Visible=True
.导航2“https://www.tipranks.com/stocks/mmm/stock-analysis"
当.Busy或.readyState<4:DoEvents:Wend时
Do’可以在这里使用定时循环来处理无限循环风险
Set elem=.document.querySelectorAll(“tspan”)
元素长度为0时循环
调试.打印元素项(0).innerText
退出
以
端接头
最重要的问题是,如果您100%确信网页在尝试使用其元素之前已完全加载?我有一个内置的readystate完整循环,该循环也适用于其他应用程序。您能提供url吗?我试图拉“聪明分数”评级,左上角的大数字解决了。类名有一个下划线,实际上是2个下划线很难说有什么区别。嵌套的getelementsbytagname实现了这一点。
text = IE.document.querySelector("tspan[text-anchor='middle']").innerText
Option Explicit
Public Sub GetData()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate2 "https://www.tipranks.com/stocks/mmm/stock-analysis"
While .Busy Or .readyState < 4: DoEvents: Wend
Do 'could use timed loop here to handle infinite looping risk
Set elem = .document.querySelectorAll("tspan")
Loop While elem.Length = 0
Debug.Print elem.item(0).innerText
.Quit
End With
End Sub