我真的很难浏览HTMLDocument
课程中的所有属性。我有一个网页,我在WebBrowser
嵌入的WPF Window
中加载。我有一个像
private void _browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
HTMLDocument document = (HTMLDocument) this._browser.Document;
if (document.body != null)
{
this.Height = //get the div with the id 'wrapper' and get it's height
}
}
基本上。当页面完成导航时,我想获得HTML中特定分隔符的高度。
以下是HTML的外观:
<html lang="en-US">
<head>…</head>
<div id = "wrapper">…</div>
<body blah blah blah>…</body>
</html>
似乎我找不到这个HTML,虽然它在HTMLDocument
类中。我想获得这个分隔符的高度,并将窗口高度设置为此分隔符的高度以及其他任何需要按钮和其他内容的空间。
我应该在哪里搜索?
起初,我正在尝试
HTMLDocument document = (HTMLDocument) this._browser.Document;
this.Height= document.body.offsetHeight
但这远远不够正确,而且我似乎无法找到我已阅读的HTMLElement
类型的任何内容,您可以在其中访问单个HTMLElement
。
如果您以前曾在这个班级工作过,或者可以看到我出错的地方,我们将非常感谢您的帮助。
答案 0 :(得分:1)
请下载HTML Agility Pack并将其添加到项目参考
protected void BtnIndex_Click(object sender, EventArgs e)
{
string source = getHtml("http://stackoverflow.com");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(source);
HtmlNodeCollection cont;
cont = doc.DocumentNode.SelectNodes("//div[@id='wrapper']");
}
string getHtml(string url)
{
string Shtml = string.Empty; ;
try
{
//WebClient client = new WebClient();
//client.Encoding = Encoding.UTF8;
//Shtml = client.DownloadString(url);
//Shtml = new WebClient().DownloadString(url); bejoz utf-8
HttpWebRequest myWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
myWebRequest.Method = "GET";
// Make request for web page
HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
StreamReader myWebSource = new StreamReader(myWebResponse.GetResponseStream());
Shtml = myWebSource.ReadToEnd();
myWebResponse.Close();
}
catch
{
Response.Write(" error: " + url + Environment.NewLine);
}
return Shtml;
}