【发布时间】:2018-03-07 01:46:57
【问题描述】:
好的,
我花了几个小时寻找如何从表格中获取文本,但在我的一生中,我还没有遇到过适合我的方法。
这是我试图从中获取信息的 HTML 示例
<table class="empDetailCard foldable unfolded">
<tr>
<td colspan="4" class="title">
<span class="fold-control">full name</span>
</td>
</tr>
<tr class="fold-row">
<td>
<div class="badgePhoto reg">
<img class="photo " src="removed" />
</div>
</td>
<td>
<span class="line">
<span class="section-title">Employee Info</span>
</span>
<div class="employeeInfo">
<div>
<span class="line">
<span class="row-label">Login</span>
mylogin</span>
<span class="line">
<span class="row-label">Empl ID</span>
1234567</span>
<span class="line">
<span class="row-label">Badge</span>
1234567</span>
<span class="line">
<span class="row-label">Dept ID</span>
1234567</span>
<span class="line">
<span class="row-label">Location</span>
1234567
</span>
<span class="line">
<span class="row-label">Manager</span>
<a href="removed"
title="">John, Smith</a>
</span>
</td>
</tr>
</table>
我尝试使用 GetElementByID、GetElementByName 甚至正则表达式从登录表中获取“mylogin”,但我没有运气。
Function IdtoLogin(empID As String)
Dim H As Object, html As Object, objResult As Object
Set H = CreateObject("WinHttp.WinHttpRequest.5.1")
H.Open "GET", "myurl" & empID
H.setRequestHeader "Content-Type", "text/xml"
H.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
H.SetAutoLogonPolicy 0
H.send
Set html = New HTMLDocument
html.Body.innerHTML = H.ResponseText
Set objResult = html.GetElementById("Login")
IdtoLogin = objResult.innerHTML
End Function
响应返回带有登录信息的正确 HTML,但无法获取元素 ID 并引发“运行时错误 91”。如果有人能指出对我来说显而易见的事情,那就太好了,因为我快疯了。
【问题讨论】:
-
您发布的html中没有id。
-
这有一个 ID ...
<div id="mainbar"> -
你必须做
getelementsbyClassName然后将innertext与“登录”进行比较 -
我试过 getelementsbyclassname 但它会抛出运行时错误 438
-
我已经更新了主帖以显示更多来自我试图从中获取信息的页面的 HTML。
标签: html vba excel getelementbyid