2017-07-15 58 views
-1

我知道这个问题有很少的细节,但我会尽力解释我能做的最好的。我滚动了所有的解决方案,但我找不到一个解决方案。我没有尝试过任何东西,因为我不知道从哪里开始?在.NET中找到一个链接WebBrowser

好吧,我想找到这个链接的href,指导我的浏览器编程它。那可能吗?由于令牌问题,将它们重定向到/注销时不起作用。

在C#WebBrowser中查找链接?

<li><a href="/sign-out?t=e8fd9b802946bfe81a9c51961b8a62b3"><i class="ico-signout mr5"></i>Sign Out</a></li> 
+0

Web客户端与正则表达式? – Proxytype

+0

如何确定具体的链接,如果有多个? –

+0

这不是问题,如果他们是相同的,他们将重定向到相同的地方... – Proxytype

回答

0

您可以从Web浏览器中得到了网站的内容,使用正则表达式使用这种模式

public ArrayList HRefs(string incomingHtml) 
{ 
    ArrayList arrayList = new ArrayList(); 
    string pattern = "href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))"; 
    for (Match match = Regex.Match(incomingHtml, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled); match.Success; match = match.NextMatch()) 
    { 
    string str = match.Groups[1].Value; 
    arrayList.Add((object) str); 
    } 
    return arrayList; 
} 
+0

好的。接着 ..? –

+0

webBrowser1.Navigate到数组中的任何链接 – Proxytype

+0

但是,我将如何找到我需要的链接? –

2

找到HREF所以有很多的方法可以做到这一点,但专门与WebBrowser控件可以通过它的类名来获取元素。

所以在您的网页浏览器加载文件的方法试试:

var links = wb.Document.GetElementsByTagName("i"); 
    foreach (HtmlElement link in links) 
    { 
     if (link.GetAttribute("className") == "mr5") 
     { 
      var href = link.innerHtml; 
     } 
    } 
+0

正则表达式有点混乱,这里是一个非常适应的方式。 – 2017-07-15 22:14:38

+0

我其实更喜欢这个解决方案。我想你甚至可以使用Linq方法来获得你想要的。 –

+0

正则表达式要快得多...... :) – Proxytype