【发布时间】:2018-07-24 13:39:58
【问题描述】:
我有一个带有一些 URL 的 Excel 工作表,我正在尝试编写一个宏来使用 Fortigate 的 Web 过滤器填充网站类别。例如,工作表上的一个单元格可能包含“www.google.com”,网站将其归类为 URL https://fortiguard.com/webfilter?q=google.com 的“搜索引擎和门户网站”。
我很难尝试解析 HTML 以获取类别。 HTML 看起来像:
<DIV class=sidebar-content>
<H4>WF Rating History</H4>
<P><SPAN style="FONT-SIZE: 10px"><EM>Jun 10th, 2008 @ 17:45:24 PDT</EM></SPAN><BR>added as <STRONG>Search Engines and Portals</STRONG></P>
<DIV><A href="about://forticlient.com/" target=_blank><IMG src="about:/static/images/forticlient_share_button.png?v=5"></A> </DIV></DIV>
我用来获取的代码如下(我只是在尝试一个站点,并假设它位于工作表上的 A1 上):
Sub siteCatgories()
Dim xhr As MSXML2.XMLHTTP60
Dim doc As MSHTML.HTMLDocument
Set xhr = New MSXML2.XMLHTTP60
Url = Cells(1, 1).Value
With xhr
.Open "GET", "https://fortiguard.com/webfilter?q=" & Url, False
.send
If .readyState = 4 And .Status = 200 Then
Set doc = New MSHTML.HTMLDocument
doc.body.innerHTML = .responseText
End If
End With
'retrieve relevant HTML
Debug.Print doc.getElementsByClassName("sidebar-content").toString
End Sub
上面的调试语句只返回[Object]。 任何有关如何在 VBA 中解析网站 HTML 的帮助将不胜感激!
【问题讨论】:
-
您能详细说明一下吗?您到底想从网页中提取什么。?您要提取哪些字段?
-
Debug.Print doc.getElementsByClassName("sidebar-content")(0).toString(getElementsByClassName 是复数;即一个集合)
标签: html excel vba xmlhttprequest