我正在尝试使用webBrowser1编写一种方法来通过href获取下载链接,但问题是我必须使用其类名来找到它。
¶ ¶→ ¶→ ¶→ Rush·Mp3·Download ¶→ ¶→¶→→ ¶→→→ ¶→→→ ¶→→→→ ¶→→→→ ¶→→→→ ¶→→→→→ ¶→→→→→→ ¶→→→→→→ Download ·¶→→→→→→ ¶→→→→→→ ·¶→→→→→→ ¶→→→→→ ¶→→→→→ ¶→→→→ →¶→→→→ ¶→→→ ¶→→→ ¶→→ 我在谷歌搜索和搜索,但我找到了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 在富文本框中格式化文本 silverlight中的byte 到BitmapImage 在C#中,什么是方法声明后?异步CTP在VS 2010 SP1中不起作用?如何在没有接口的情况下模拟多重inheritance?将图像写入Process.StandardInput.BaseStream的更快捷方式在C#错误中运行powershell命令,“无法调用此函数,因为当前主机未实现它”当服务器和客户端在同一台计算机上时,收听广播在图像上绘制边框C#:存储百分比,50还是0.50?Autofac – 注册多个装饰器 Go! Interesting Posts 如何以“Name ”格式解析字符串如何为Lua(forWindows)创建可加载的自定义.NET DLL?期望参数’@ID’,没有提供?从ADO.NET和SMSS执行时,具有相同查询计划的相同查询需要大约10倍的时间C#:如何处理大数字的算术?NHibernateinheritance – 判别器 – 值无法将类型字符串隐式转换为intY中的类型X与Z中的导入类型X冲突UI预制件在canvas下方实例化构建语言切换器 – 仅限2种语言 – ASP.NET MVC
我在谷歌搜索和搜索,但我找到了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元素:
WebBrowser
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