我使用
成功浏览网页Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%APPDATA%")
Set objExplorer = WScript.CreateObject _
("InternetExplorer.Application", "IE_")
objExplorer.Navigate "http://www.example.org"
objExplorer.Visible = 1
但我想加载网页而不在网页上加载图片(例如:删除所有img标签)。这样做的正确方法是什么?
答案 0 :(得分:4)
您可以通过操作DOM树来加载页面后删除图像:
...
'wait for IE to finish loading the page
While objExplorer.ReadyState <> 4 : WScript.Sleep 100 : Wend
'remove <img> elements fromt the page
For Each img In objExplorer.document.getElementsByTagName("img")
img.parentNode.removeChild(img)
Next
如果您想避免完全加载图像,则必须禁用“Internet选项”中的“显示图片”设置。
此设置也可以在注册表中更改(在启动Internet Explorer之前),如下所示:
Set sh = CreateObject("WScript.Shell")
regval = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images"
sh.RegWrite regval, "no", "REG_SZ"
Set ie = CreateObject("InternetExplorer.Application")
...
正如@Matt在您的问题的评论中建议的那样,您也可以只检索HTML页面:
url = "http://www.example.org"
Set req = CreateObject("Msxml2.XMLHTTP.6.0")
req.open "GET", url, False
req.send
html = req.responseText
删除<img>
代码(或者更确切地说是src
属性的值):
Set re = New RegExp
re.Pattern = "(<img[^>]*src=[""']).*?([""'][^>]*>)"
re.Global = True
re.IgnoreCase = True
html = re.Replace(html, "$1$2")
将其保存到本地文件:
filename = "C:\temp.html"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.OpenTextFile(filename, 2, True).Write html
然后在IE中加载该本地文件:
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "file://" & filename
While ie.ReadyState <> 4 : WScript.Sleep 100 : Wend
ie.Visible = True
这种方法的缺点是相对链接和对原始网站资源的其他引用(样式表,JavaScript库......)将不再起作用,因为您从不同的上下文加载页面,这些资源不在不存在。当然,除非您通过在基本URL之前添加相对路径将它们转换为绝对引用来使它们再次工作。如果你想覆盖所有基础,这可能是相当多的工作。