使用Web浏览器控件获取div类的内容?
我有一个带有webBrowser1
控件的表单,用于加载一个页面,该页面在其HTML部分中包含以下行:
... Hello World !
我需要获取div
元素的innerText
。 我尝试了以下方法:
string result = ""; foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div")) if (el.GetAttribute("class") == "cls") { result = el.InnerText; }
但上面的代码似乎不起作用,并且根据解决方案1在另一个网站上的类似问题 ,它被声明
引起我注意的第一件事是:
没有定义div
元素的名称,它定义了它的CSS样式类。 而是使用属性名称(或两者),例如:
。如果只有
class
属性,我怎样才能得到div
元素的innerText
?任何帮助将受到高度赞赏。
您应该使用
ClassName
而不是class
:if (el.GetAttribute("className") == "cls") { … }
有关详细信息,请参阅HtmlElement.GetAttribute(“class”)不运行 。
将
runat="server"
和ID
属性添加到div
,如下所示:…
Hello World !添加
runat="server"
属性后,您可以像对象一样使用ID
调用后面的代码:string result = hello_div.InnerText; // or InnerHtml
HtmlDocument doc = webBrowser1.Document; HtmlElementCollection divs = doc.GetElementsByTagName("div"); foreach (HtmlElement div in divs) { try { var info = div.DomElement; PropertyInfo[] pi = info.GetType().GetProperties(); string strClass = pi[0].GetValue(div.DomElement).ToString(); if (strClass == "cls") { //DoStuff } } catch { } }