如何按class级进行getelement?

我正在尝试使用webBrowser1编写一种方法来通过href获取下载链接,但问题是我必须使用其类名来找到它。

  ‌¶ 

我在谷歌搜索和搜索,但我找到了PHP示例?

我知道你会做同样的事情

 HtmlElement downloadlink = webBrowser1.Document.GetElementById("song_html").All[0]; URL = downloadlink.GetAttribute("href"); 

但我不明白如何通过“show1”类来做到这一点。

请通过我可以访问的示例和/或网站向我指出正确的方向,这样我就可以学习如何在搜索时做到这一点,并且不知道。

编辑:我非常需要href链接(“http://dc182.4shared.com/img/1011303409/865387c9/dlink__2Fdownload_2F6QmedN8H_3Ftsid_3D20111211-54337-a79f8d10/preview.mp3”),那么我将如何获得它?

WebBrowser控件中没有内置任何内容来按类名检索元素。 既然你知道它将是a元素,你可以做的最好的事情是获取所有元素并搜索你想要a元素:

 var links = webBrowser1.Document.GetElementsByTagName("a"); foreach (HtmlElement link in links) { if (link.GetAttribute("className") == "show1") { //do something } } 

HtmlDocument的扩展方法

返回具有特定标记的元素列表,该标记与给定的className一致

它可用于仅在标记上捕获元素,或仅通过类名捕获元素

 internal static class Utils { internal static List getElementsByTagAndClassName(this HtmlDocument doc, string tag = "", string className = "") { List lst = new List(); bool empty_tag = String.IsNullOrEmpty(tag); bool empty_cn = String.IsNullOrEmpty(className); if (empty_tag && empty_cn) return lst; HtmlElementCollection elmts = empty_tag ? doc.All : doc.GetElementsByTagName(tag); if (empty_cn) { lst.AddRange(elmts.Cast()); return lst; } for (int i = 0; i < elmts.Count; i++) { if (elmts[i].GetAttribute("className") == className) { lst.Add(elmts[i]); } } return lst; } } 

用法:

 WebBrowser wb = new WebBrowser(); List lst_div = wb.Document.getElementsByTagAndClassName("div");// all div elements List lst_err_elmnts = wb.Document.getElementsByTagAndClassName(String.Empty, "error"); // all elements with "error" class List lst_div_err = wb.Document.getElementsByTagAndClassName("div", "error"); // all div's with "error" class