从webbrowser控件中的iFrame内部复制图片

时间:2013-07-22 13:41:24

标签: vb.net iframe webbrowser-control

我使用下面的代码成功获取使用webbrowser控件加载的页面内每张图片的副本。

    Dim doc As IHTMLDocument2 = DirectCast(wb.Document.DomDocument, IHTMLDocument2)
Dim imgRange As IHTMLControlRange = DirectCast(DirectCast(doc.body, HTMLBody).createControlRange(), IHTMLControlRange)
For Each img As IHTMLImgElement In doc.images
  imgRange.add(DirectCast(img, IHTMLControlElement))

  imgRange.execCommand("Copy", False, Nothing)

  Using bmp As Bitmap = DirectCast( _
      Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
    bmp.Save(img.nameProp)
  End Using
Next

我从这里得到了代码:Copy an image from cache of web browser control present in VB.NET

然而,我感兴趣的图片是在iFrame中。

我尝试过改变:

Dim doc As IHTMLDocument2 = DirectCast(wb.Document.DomDocument, IHTMLDocument2)

Dim doc As IHTMLDocument2 = DirectCast(wb.Document.Window.Frames(iFrameID).Document.DomDocument, IHTMLDocument2)

但是我收到了“拒绝访问”错误。我猜(不确定)因为iframe的src在不同的域上。

有解决这个问题的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果iFrame包含来自与父母不同的域的内容,则表示您没有运气。您可以尝试不同的解决方案并通过Ajax检索iFrame的页面并解析出图像src。另一种方法是使用像PhantomJs(或VB,PHP等)这样的程序来服务器端来检索页面并解析它以便检索图像。

相关问题