我写了一个函数,在我的WebBrowser控件导航时保存站点的源代码。我不能只保存WebBrowser.DocumentText,因为这会遗漏所有框架内容。
我现在遇到的问题是访问框架内容--我找不到包含它的方法/属性。
下面是一个简单的WebBrowser控件,只需将saveWebsite(FilePath, WebBrowser1)放在DocumentCompleted事件中即可。
我在VB.NET中做过,但熟悉C#,所以C#解决方案也很好
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发布于 2012-08-22 21:55:17
经过更多的实验,我找到了一个解决方案。但是它很脏,我不是特别喜欢它。
将最后一行/issue行从oFrame.WindowFrameElement.InnerText切换到oFrame.Document.All.Item(0).OuterHtml似乎有时会起到作用。这不会对嵌套框架做任何事情,但我并不真正担心这一点。
无论谁,如果谁有一个更干净的解决方案,请让我知道。(甚至是一种更有效/更高效的“保存所有”的方法)。
编辑:下面的方法似乎更好一些,但仍然不是很好。(我有一个以<% VBSCRIPT %>开头的网页,这就是保存的所有内容) oFrame.Document.GetElementsByTagName("html").Item(0).OuterHtml
发布于 2020-10-16 13:15:33
我也面临着类似的问题,我想访问一个页面中一个框架内的所有文本内容。下面的代码对我很有效
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。因此,代码返回其内容
https://stackoverflow.com/questions/12048331
复制相似问题