首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WebBrowser控件获取帧源

从WebBrowser控件获取帧源
EN

Stack Overflow用户
提问于 2012-08-21 12:08:51
回答 2查看 3.1K关注 0票数 0

我写了一个函数,在我的WebBrowser控件导航时保存站点的源代码。我不能只保存WebBrowser.DocumentText,因为这会遗漏所有框架内容。

我现在遇到的问题是访问框架内容--我找不到包含它的方法/属性。

下面是一个简单的WebBrowser控件,只需将saveWebsite(FilePath, WebBrowser1)放在DocumentCompleted事件中即可。

我在VB.NET中做过,但熟悉C#,所以C#解决方案也很好

代码语言:javascript
复制
    Public Sub saveWebsite(ByVal sDirectory As String, ByVal oBrowser As WebBrowser)

    File.WriteAllText(sDirectory & "index.htm", oBrowser.DocumentText)

    'Now write a file for each frame - putting each file in its relative path'
    For Each oFrame As HtmlWindow In oBrowser.Document.Window.Frames
        oFI = New FileInfo(sDirectory & oBrowser.Url.MakeRelativeUri(oFrame.Url).ToString)
        oFI.Directory.Create()

        'ISSUE: This is the issue, unlike with oBrowser, there is no DocumentText property for oFrame.'
        'ISSUE: Ive tried several things like Body.InnerText/Html, Body.OuterText/HTML, etc.'
        File.WriteAllText(oFI.ToString, oFrame.WindowFrameElement.InnerText )
    Next oFrame
End Sub
EN

回答 2

Stack Overflow用户

发布于 2012-08-22 21:55:17

经过更多的实验,我找到了一个解决方案。但是它很脏,我不是特别喜欢它。

将最后一行/issue行从oFrame.WindowFrameElement.InnerText切换到oFrame.Document.All.Item(0).OuterHtml似乎有时会起到作用。这不会对嵌套框架做任何事情,但我并不真正担心这一点。

无论谁,如果谁有一个更干净的解决方案,请让我知道。(甚至是一种更有效/更高效的“保存所有”的方法)。

编辑:下面的方法似乎更好一些,但仍然不是很好。(我有一个以<% VBSCRIPT %>开头的网页,这就是保存的所有内容) oFrame.Document.GetElementsByTagName("html").Item(0).OuterHtml

票数 0
EN

Stack Overflow用户

发布于 2020-10-16 13:15:33

我也面临着类似的问题,我想访问一个页面中一个框架内的所有文本内容。下面的代码对我很有效

代码语言:javascript
复制
Dim frame = WebBrowser1.Document.Window.Frames(0) //Replace 0 with frame id if needed
Dim innderdiv= frame.Document.GetElementById("divContentLower")
Dim contents = innderdiv.InnerText
MsgBox(contents )

这里的div是框架中直接子divContentLover的id。因此,代码返回其内容

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12048331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档