我使用下面的代码来读取和提取网站数据。但在特定的URL(http://www.iamf.ir)有一个问题!
Dim HTML_Content As HTMLDocument
Dim dados As Object
'Create HTMLFile Object
Set HTML_Content = New HTMLDocument
'Get the WebPage Content to HTMLFile Object
With CreateObject("msxml2.xmlhttp")
.Open "GET", "http://www.iamf.ir", False
.send
HTML_Content.body.innerHTML = .responseText
Debug.Print .responseText ' it's OK
Debug.Print HTML_Content.body.innerHTML ' it show nothing! (problem is here)
End With
这应该是你的问题的答案,虽然我不认为它真的解决了你的问题。
您对此网站所做的XMLHTTP请求以空体响应,您可以从Debug.Print .responseText
行注意到:
<HTML>
<HEAD>
<TITLE>امین آشنا ایرانیان</TITLE>
<META NAME="Keywords" CONTENT="">
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://www.iafi.ir">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY> <-- body is empty
</BODY>
</HTML>
这就是为什么当你打印你的.body.innerHTML
的HTML_document
时,你得到一个空字符串。
有些网站的构建方式只有完整的堆栈执行(即执行XMLHTTP请求时不会执行的JavaScript执行)才能正确呈现您在浏览器中看到的内容。在您的特定情况下,您可能需要根据不可见的浏览器获取执行速度较慢但始终有效的信息。你可以看看我前段时间写过的this answer有个主意。