我想获取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源代码?
答案 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。