使用Web浏览器控件获取div类的内容?

时间:2013-04-20 22:57:12

标签: c# .net

我有一个带有webBrowser1控件的表单,用于加载在其HTML部分中包含以下行的页面:

 ...
 <div class="cls">
 Hello World !
 </div>

我需要获取innerText元素的div。我尝试了以下方法:

 string result = "";
 foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div"))
                if (el.GetAttribute("class") == "cls")
                {
                    result = el.InnerText;
                }

但上面的代码似乎不起作用,根据to Solution 1 for a similar question on another website,它表示

  

引起我注意的第一件事是:<div class="thin">没有定义div元素的名称,它定义了它的CSS样式类。而是使用属性名称(或两者),例如:<div class="thin" name="thin">

如果只有innerText属性,如何获取div元素的class

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:12)

您应该使用ClassName代替class

 if (el.GetAttribute("className") == "cls") { … }

有关详细信息,请参阅HtmlElement.GetAttribute("class") doesn't run

答案 1 :(得分:1)

runat="server"ID属性添加到div,如下所示:

 …
 <div class="cls" ID="hello_div" runat="server">
 Hello World !
 </div>

添加runat="server"属性后,您可以像对象一样使用ID对后面的代码进行调用:

string result = hello_div.InnerText; // or InnerHtml

答案 2 :(得分:0)

        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
            {

            }
        }