0

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
4

2 に答える 2

0

さらに実験した後、解決策を見つけました。しかし、それは汚れていて、私は特に好きではありません。

最終/発行行を からoFrame.WindowFrameElement.InnerTextに切り替えると、oFrame.Document.All.Item(0).OuterHtml時々うまくいくようです。これはネストされたフレームについては何もしませんが、私はそれについてあまり心配していません.

誰かが上記のよりクリーンな解決策を持っている場合は、私に知らせてください。(または、「すべてを保存」するより効果的/効率的な方法です)。

編集:以下は少しうまくいくようですが、それでもうまくいきません。(<% VBSCRIPT %> で始まる Web ページがあり、それがすべて保存されました)oFrame.Document.GetElementsByTagName("html").Item(0).OuterHtml

于 2012-08-22T13:55:17.243 に答える