当你希望得到的动态HTML内容,并webBrowser.Document
,webBrowser.DocumentText
和webBrowser.DocumentStream
不工作,你的愿望。
这里的技巧:您可以随时从C#运行您的自定义JavaScript代码。这里是你如何能得到当前的HTML你WebBrowser
控制:
webBrowser.Document.InvokeScript("eval", new string[]{"document.body.outerHTML"});
参考How to inject Javascript in WebBrowser control?。
更新
对于iframe
您document
里面,你可以尝试以下方法:
webBrowser.Document.InvokeScript("eval", new string[]{"document.querySelector(\"iframe\").contentWindow.document.documentElement.outerHTML"});
另一个更新
当你的网站包含frame
,而不是iframe
,这里是你如何获得该的html内容:
webBrowser.Document.InvokeScript("eval", new string[]{"document.querySelector(\"frame[name='mainframe'\").contentWindow.document.documentElement.outerHTML"});
最终测试和更新工作
querySelector
不WebControl
工作。因此,解决方法是:为您的<frame>
提供一些id
,并使用该id
获取该<frame>
元素。这里是你如何实现你的任务。
HtmlElement frame = webBrowser1.Document.GetElementsByTagName("frame").Cast<HtmlElement>().FirstOrDefault(m => m.GetAttribute("name") == "mainframe");
if (frame != null)
{
frame.Id = "RandID_" + DateTime.Now.Ticks;
string html = webBrowser1.Document.InvokeScript("eval", new string[] { "document.getElementById('" + frame.Id + "').contentWindow.document.documentElement.outerHTML" }).ToString();
Console.WriteLine(html);
}
else
{
MessageBox.Show("Frame not found");
}
来源
2016-11-28 09:55:58
sam
发布□请之前做一些研究。 – Tatranskymedved
可能的重复[如何在C#中下载HTML源代码](http://stackoverflow.com/questions/599275/how-can-i-download-html-source-in-c-sharp) – Tatranskymedved
为什么不你只需使用'HttpClient'从wesbite下载? https://www.dotnetperls.com/httpclient –