我想提取一个我可以在网站上找到的项目的projectstatus。请参阅下面的示例,了解如何解析html。我想提取文本开始,这是td和/ td之间的文本。请参阅下面的html我的代码。
<div id="ProjectStatus">
<tr>
<th>
<span id="ProjectStatus_Label1" title="De status van het project">Projectstatus</span>
</th>
<td>Start</td>
</tr>
下面你会找到我目前的代码。这段代码只给我字符串“Projectstatus”,这不是我想要的。如何提取“开始”一词?
Private Sub btnClick()
Dim ieApp As InternetExplorer
Set ieApp = New InternetExplorer
Set ieApp = CreateObject("internetexplorer.application")
With ieApp
.Navigate "url"
.Visible = True
End With
Do While ieApp.Busy
DoEvents
Loop
Set getStatus = ieApp.Document.getElementById("ProjectStatus_Label1")
strStatus = getStatus.innerText
MsgBox (strStatus) 'gives met the text "Projectstatus, but I need the text "Start"
ieApp.Quit
Set ieApp = Nothing
End Sub
答案 0 :(得分:1)
从ProjectStatus_Label1
开始实现此目标需要一些DOM导航。
使用以下内容:
Do While ieApp.Busy
DoEvents
Loop
Set labelSpan = ieApp.Document.getElementById("ProjectStatus_Label1")
Set tableHeader = labelSpan.Parent
Set tableRow = tableHeader.Parent
For Each child In tableRow.Children
If child.tagName = "TD" 'This is the element you're looking for
Debug.Print child.innerText
Exit For
End If
Next
当然,我强烈建议您修改此代码并使用明确的声明和Option Explicit
,但您没有问题,所以我不会在答案中获胜。
此外,我还使用了许多作业(labelSpan,tableHeader)进行演示。您可以使用Set tableRow = ieApp.Document.getElementById("ProjectStatus_Label1").Parent.Parent
并删除其他声明。
或者您可以使用代码 - 高尔夫,难以理解的方法,从 ProjectStatus div开始:
Debug.Print ieApp.Document.getElementById("ProjectStatus").GetElementsByTagName("td")(0).innerText