【发布时间】:2017-03-06 14:59:52
【问题描述】:
您好,我想使用 VBA 从天气网站中提取数据。我想要做的是从这个 HTML 代码中获取数字 6:
</tr>
<tr>
<td class="indent"><span>Temperatura średnia</span></td>
<td>
<span class="wx-data"><span class="wx-value">6</span><span class="wx-unit"> ° C</span></span>
</td>
<td>
-
</td>
<td> </td>
</tr>
<tr>
<td class="indent"><span>Temperatura maksymalna</span></td>
<td>
<span class="wx-data"><span class="wx-value">7</span><span class="wx-unit"> ° C</span></span>
</td>
<td>
<span class="wx-data"><span class="wx-value">8</span><span class="wx-unit"> ° C</span></span>
</td>
我试过这样的代码:
Private Sub CommandButton1_Click()
Dim IE As Object
' Create InternetExplorer Object
Set IE = CreateObject("InternetExplorer.Application")
' You can uncoment Next line To see form results
IE.Visible = False
' URL to get data from
IE.Navigate "https://www.wunderground.com/history/airport/EPGD/2016/10/24/DailyHistory.html?req_city=Pruszcz%20Gdanski&req_statename=Polska&reqdb.zip=00000&reqdb.magic=86&reqdb.wmo=12140"
' Statusbar
Application.StatusBar = "Loading, Please wait..."
' Wait while IE loading...
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Application.StatusBar = "Searching for value. Please wait..."
Dim dd As String
dd = IE.Document.getElementsByClassName("Temperatura średnia")(0).innerText
MsgBox dd
' Show IE
IE.Visible = True
' Clean up
Set IE = Nothing
Application.StatusBar = ""
End Sub
没有任何结果(代码什么都不做)。我将不胜感激。
【问题讨论】:
-
“Temperatura średnia”似乎不是类名“wx-value”。当您尝试
dd = IE.Document.getElementsByClassName("wx-value")(0).innerText时会发生什么?如果这个页面有其他 wx-values,那么你需要遍历它们。 -
你能扩展一下“代码什么都不做”吗?状态栏是否曾经设置为“加载中,请稍候...”?搜索消息怎么样?文件是否曾经被加载?您能否将其中一个元素中的 html 用于 MsgBox 以检查它是否存在?你能找到你要找的元素吗?
-
我在 op 中编辑了更多行的 HTML 代码。 wx-value 重复:(
-
状态栏设置为加载,但在 dd = IE.Document.getElementsByClassName("Temperatura średnia")(0).innerText 行显示错误
标签: regex vba excel web-scraping xmlhttprequest