2016-10-22 68 views
1

我知道这是一个愚蠢的问题,但我很难与此。我想获得没有ID的'href'的价值,但我不能。如何获得没有身份证'href'的价值VB

下面是HTML

<p class="CLASS"> 
    <a href="URL" target="TARGET"> 
     <img src="IMGURL" title="TITLE" border="BORDER"> 
    </a> 
</p> 

这里是我使用的是什么(即不工作):

For Each WPE As HtmlElement In WebBrowser1.Document.GetElementsByTagName("a") 
    If WPE.GetAttribute("target").Equals("TARGET") Then 
     HREFVALUE = WPE.Getattribute("href") 
     Exit For 
    End If 
Next 

因此,如何让 'href' 属性的值?

回答

1

您的代码正常工作。但是你没有得到预期的结果,因为你可能在错误的地方执行了代码。代码应该在文档完成后运行。一个好地方,知道该文件已完成是WebBrowser控制的DocumentCompleted事件:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Me.WebBrowser1.Navigate("d:\file.html") 
End Sub 
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As _ 
    WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 

    Dim tag = Me.WebBrowser1.Document.GetElementsByTagName("a").Cast(Of HtmlElement) _ 
       .Where(Function(a) a.GetAttribute("target") = "TARGET") _ 
       .FirstOrDefault() 
    Dim href = tag.GetAttribute("href") 
End Sub 

我用上面的代码LINQ只是为了学习的目的。你自己的代码也可以正常工作。

+0

谢谢你的回答。尽管这在大多数情况下都是有效的,但有时它会重复执行多次下面的代码,从而影响结果并触发某些代码意外运行。 –