當你希望得到的動態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 –