从Cefsharp浏览器中获取HTML

3

我正在使用CefSharp v55.0在我的WinForm项目中。页面加载完毕后,我想从中获取HTML代码。为此,我使用以下代码:

private void WebBrowserFrameLoadEnded(object sender, FrameLoadEndEventArgs e)
{
    if (e.Frame.IsMain)
    {
        test.ViewSource();
        test.GetSourceAsync().ContinueWith(code =>
        {
            var html = code.Result;
        });
    }
}

为了进行交叉检查,我还调用了test.ViewSource()方法,以查看GetSourceAsync方法是否获取到了整个代码。

不幸的是,这两者的代码是不同的。ViewSource可以获取整个代码,但GetSourceAsync无法获取页面中通过javascript生成的代码。

请告诉我如何像ViewSource一样获取网页源代码,或者告诉我如何捕获ViewSource方法的临时文件。

谢谢。


1
请参见 https://github.com/cefsharp/CefSharp/issues/1864。 - amaitland
2个回答

8

尝试这个,它对我有效:

    public void showSource()  // <<<<<<<<<<<<<<<<<<<<<<<<<< Call this function
    {
        Task ts = getSource();
    }

    private async Task getSource()
    {
        try
        {
            //
            string source = await chromeBrowser.GetBrowser().MainFrame.GetSourceAsync();
            //
            string f = Application.StartupPath + "\\currentSource.txt";
            //
            StreamWriter wr = new StreamWriter(f, false, System.Text.Encoding.Default);
            wr.Write(source);
            wr.Close();
            //
            System.Diagnostics.Process.Start(f);
            //
        }
        catch (Exception)
        {
            //Error !
        }
    }

1

VB.Net:

Sub ShowSource()
        Dim ts As task = getSource()
End Sub


Private Async Function getSource() As Task
    Dim source As String = Await wb.GetBrowser().MainFrame.GetSourceAsync()


    Dim f As String = Application.StartupPath + "/currentSource.txt"

    Dim wr As StreamWriter = New StreamWriter(f, False, System.Text.Encoding.Default)
    wr.Write(source)
    wr.Close()

    System.Diagnostics.Process.Start(f)


End Function

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接