将网站的一部分显示到Web浏览器中
本文关键字:Web 浏览器 显示 网站 一部分 | 更新日期: 2023-09-27 18:17:27
我想导航到一个特定的网站,我想然后在web浏览器中显示只有网站的一部分,它开始于:
<div id="dex1" ...... </div>
我知道我需要通过id获得元素,但首先我试着写这个:
string data = webBorwser.Document.Body.OuterHtml;
所以从数据我需要抓取内容"id"并显示它和其余的被删除。
有什么想法吗?
webBrowser1.DocumentCompleted += (sender, e) =>
{
webBrowser1.DocumentText = webBrowser1.Document.GetElementById("dex1").OuterHtml;
};
再考虑一下,不要这样做,设置DocumentText属性会导致DocumentCompleted事件再次触发。所以可以这样做:
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.DocumentCompleted -= webBrowser1_DocumentCompleted;
webBrowser1.DocumentText = webBrowser1.Document.GetElementById("dex1").OuterHtml;
}
虽然在大多数现实世界的情况下,我希望你注入一些javascript来做DOM操作会得到更好的结果,就像Andrei的回答。
编辑:只是替换正文标签内的一切,如果你幸运的话,可能会保持所有所需的样式和脚本,如果它们都在头部,不引用任何丢弃的上下文,你可能会有一些乐趣:
webBrowser1.Document.Body.InnerHtml = webBrowser1.Document.GetElementById("dex1").OuterHtml;
所以,由于您可能需要大量的外部资源,如脚本和图像。你可以添加一些自定义javascript来修改DOM,但你喜欢从你的网站加载文档后。如何在c#中更新web浏览器控件中的DOM内容?它看起来像这样:
HtmlElement headElement = webBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptElement = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement domScriptElement = (IHTMLScriptElement)scriptElement.DomElement;
domScriptElement.text = "function applyChanges(){ $('body >').hide(); $('#dex1').show().prependTo('body');}";
headElement.AppendChild(scriptElement);
// Call the nextline whenever you want to execute your code
webBrowser1.Document.InvokeScript("applyChanges");
这也是假设jquery可用,所以你可以做简单的DOM操作。
javascript代码只是隐藏了主体上的所有子元素,然后在主体前加上'#dex'div,使其位于顶部并可见。