0

我使用下面的代码成功获取了使用 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 在不同的域上。

有没有办法解决这个问题?

谢谢!

4

1 回答 1

0

如果 iFrame 包含来自与父域不同的域的内容,那么您就不走运了。您可以尝试不同的解决方案并通过 Ajax 检索 iFrame 的页面并解析出图像 src。另一种选择是在服务器端使用 PhantomJs(或 VB、PHP 等)之类的程序来检索页面并解析它以获取要检索的图像。

于 2013-07-22T13:48:01.897 回答