从IE com对象保存或复制图像

时间:2016-09-11 20:04:41

标签: powershell com

我想从网站下载图像,以检查通过AJAX加载的网站上的其他动态信息。由于网站使用AJAX加载其他信息,我无法使用invoke-webrequest,因为ajax信息无法加载,或者至少我无法弄清楚如何触发它。出于这个原因,我决定使用Application.internetexplorer的com对象。

这可以遍历和触发javascript,但我无法弄清楚如何保存IE窗口中显示的图片。我曾尝试通过src路径下载图像,但如前所述,图像会在每次请求时略微改变原始状态。没有'保存'我可以从$ ie.document.images或任何其他路径中看到的方法。我已经尝试将.png作为innerHTML或outerHTML等输出到最后的努力,但所有都失败了。

当我看到com对象时,我可以看到图片。必须有一些方法来抓取已经在我的计算机上显示的图像。有谁知道我怎么能做到这一点?

不确定它有帮助,但到目前为止这是我的代码:

    $url = "https://somesite.com"
    $ie = New-Object -com internetexplorer.application
    $ie.navigate($url)
    while($ie.ReadyState -ne 4) {start-sleep -seconds 1} 
    $ie.visible = $true    
    $doc = $ie.Document
    $firstImage= $doc.IHTMLDocument3_getElementById('images01')
    $secondImage = $doc.IHTMLDocument3_getElementById('images02')
    $thirdImage = $doc.IHTMLDocument3_getElementById('images03')

    #how can I save firstImage as .png?

1 个答案:

答案 0 :(得分:1)

好像你大部分都在那里。你现在不能添加

Invoke-WebRequest -Uri $firstImage.href -OutFile c:\temp\...

可以通过创建IHTMLControlRange,添加DOM对象,然后在范围内使用方法execCommand("saveas")来替代,但这将始终显示 SaveAs ... 出于安全原因的对话框。有一篇相当古老的网站帖子标题为Save the Last GIF for Me,可能会帮助您了解execCommand如何工作,但到目前为止,我还没有让它从PowerShell工作,所以Invoke-WebRequest方法对我来说似乎是一个更安全的赌注,并且不一定会提出你可能不想要的对话框。