excel网页数据抓取vba(和DOM将是最好的方法吗?(上))
优采云 发布时间: 2021-09-24 09:21excel网页数据抓取vba(和DOM将是最好的方法吗?(上))
无法抑制“另存为”对话框:
从脚本调用此方法时,无法禁用“保存HTML文档”对话框
它也是一个模式对话框,您不能自动单击&34;节约34英镑;按钮面对此对话时,VBA执行会在等待手动用户输入时暂停
您可以尝试读取页面的HTML并使用标准I/O函数将其打印到文件中,而不是使用ie.document.execcommand方法
Option Explicit
Sub SaveHTML()
Dim URL as String
Dim IE as Object
Dim i as Long
Dim FileName as String
Dim FF as Integer
URL = "http://google.com" 'for TEST
Filename = "C:\Test.htm"
Set IE = CreateObject("Internetexplorer.Application")
IE.Visible = True
IE.Navigate URL
Do
Loop While IE.Busy
'Creates a file as specified
' this will overwrite an existing file if already exists
CreateObject("Scripting.FileSystemObject").CreateTextFile FileName
FF = FreeFile
Open Filename For Output As #FF
With IE.Document.Body
Print #FF, .OuterHtml & .InnerHtml
End With
Close #FF
IE.Quit
Set IE = Nothing
End Sub
我不确定这是否能完全满足你的需要。还有其他从网络获取数据的方法。最好的方法是从xmlhttp请求中获取原创HTML并将其打印到文件中
当然,我们很少需要HTML格式的整个网页,因此如果您想从网页中获取特定数据,xmlhttp和DOM将是最好的方法,您根本不需要将其保存到文件中
或者,您可以使用selenium包装器来自动化ie,这比在Internet Explorer中使用相对较少的本机方法要强大得多。应用程序类
还请注意,您使用的是一种相当粗糙的方法来等待网页加载(在ie.busy时循环)。虽然它有时可能工作,但可能不可靠。关于如何在so上正确执行此操作,有很多问题,因此我将在这里参考您的搜索功能来稍微调整代码