2017-07-15 39 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

相關問題