Awesomium - 如何使用frameset获取HTML源代码

时间:2015-06-05 17:30:25

标签: vb.net awesomium

我想获取HTML源来分析网页。 所以,我使用这样的代码:

(Work.URL只是结构中的String变量)

Dim View As WebView = WebCore.CreateWebView(1000, 600, WebCore.Sessions.Last())
View.Source = New Uri(Work.URL)

AddHandler View.LoadingFrameComplete, Sub(sender As Object, e As FrameEventArgs)
    If Not e.IsMainFrame Then Exit Sub
    Console.WriteLine(View.HTML)
End Sub

代码运行良好。和样本结果:

<!doctype html>
<html>
    <head>
        ...
    </head>
    <frameset cols="*,*">
        <frame src="test1.html" />
        <frame src="test2.html" />
    </frameset>
</html>

但是,我想在框架集中获取HTML源代码:

(与Chrome开发者工具类似)

<!doctype html>
<html>
    <head>
        ...
    </head>
    <frameset cols="*,*">
        <frame src="test1.html">
            <!doctype html>
            <html>
                <head>
                    ...
                </head>
                <body>
                    This page is TEST1.
                </body>
            </html>
        </frame>
        <frame src="test2.html">
            <!doctype html>
            <html>
                <head>
                    ...
                </head>
                <body>
                    This page is TEST2.
                </body>
            </html>
        </frame>
    </frameset>
</html>

如何获取HTML源代码?

2 个答案:

答案 0 :(得分:1)

这是获取源代码的一种方法:

string source = webControl.ExecuteJavascriptWithResult("document.getElementsByTagName('html')[0].innerHTML");

或..你可以试试这个

string source = webControl.HTML;

编辑:记得在使用webControl.HTML时,您需要等到文档加载完毕:DocumentReadyState.Loaded

答案 1 :(得分:0)

这是一个内置函数,它为您提供加载页面时设置的静态html代码。这个时机非常重要:

 webControl.HTML;

此函数使用javascript获取页面的实际动态源代码。这就是您在FireBug中看到的内容:

 webControl.ExecuteJavascriptWithResult("document.getElementsByTagName('html')[0].innerHTML");

我更喜欢:

 form.webControl.ExecuteJavascriptWithResult("document.documentElement.outerHTML");

我也读过,他们正在研究一个&#34;来源&#34;属性将隐藏时间问题,并希望提供真正的HTML。