使用 VBA 从网站提取数据什么也得不到
extract data from website using VBA get nothing
我使用下面的代码从网站读取和提取数据。但是具体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>
这就是为什么当您打印 HTML_document
的 .body.innerHTML
时,您会得到一个空字符串。
有些网站的构建方式只有全栈执行(即 JavaScript 执行,当您执行 XMLHTTP 请求时不会发生)才能正确呈现您在您的网站中看到的内容浏览器。
在您的特定情况下,您可能需要让信息执行速度较慢但始终基于不可见浏览器进行抓取。你可以查看我前段时间写的 this answer 来了解一下。
我使用下面的代码从网站读取和提取数据。但是具体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>
这就是为什么当您打印 HTML_document
的 .body.innerHTML
时,您会得到一个空字符串。
有些网站的构建方式只有全栈执行(即 JavaScript 执行,当您执行 XMLHTTP 请求时不会发生)才能正确呈现您在您的网站中看到的内容浏览器。 在您的特定情况下,您可能需要让信息执行速度较慢但始终基于不可见浏览器进行抓取。你可以查看我前段时间写的 this answer 来了解一下。