在WebBrowser控件中使用Bing Maps在两个地方之间获取里程

时间:2017-06-12 19:39:48

标签: vb.net webbrowser-control

在您在两个地方之间建立路线后,是否可以从HTML代码中提取里程?获得指示后,我可以在IE浏览器的页面源代码中查看里程,我正在尝试使用下面的内容提取显示的里程数。这可能很容易,但我很难过。

更多信息。我能够传递WebBrowser控件的位置来获取方向,并在IE中显示方向。我想在文本框中获取里程。

html代码

enter image description here

VB.NET代码

Dim miles As String = ""
Dim minutes As String = ""
Dim strHtml As String = ""
strHtml = wbMaps.DocumentText

For i As Integer = 0 To strHtml.Length - 1
    If InStr(strHtml(i).ToString, "descriptionDistance") Then
        Dim bracketLoc As Integer = 0
        Dim closeBracketLoc As Integer = 0
        bracketLoc = InStr(strHtml(i).ToString, ">")
        closeBracketLoc = InStr(strHtml(i).ToString, "<")
        miles = Mid(strHtml(i).ToString, bracketLoc + 1, closeBracketLoc - 1)
        haulMiles = Val(miles)
        tb_Miles.Text = haulMiles.ToString
    End If
Next

2 个答案:

答案 0 :(得分:1)

我明白了。我用过这个:

    Dim miles As String = ""
    Dim minutes As String = ""
    Dim strHtml As StringBuilder

    strHtml = New StringBuilder

    strHtml.Append(wbMaps.DocumentText)

    Dim lines() As String = Split(strHtml.ToString, vbCrLf)


    For Each line As String In lines

        If InStr(line, "descriptionDistance") Then

            Dim bracketLoc As Integer = 0
            Dim closeBracketLoc As Integer = 0
            bracketLoc = InStr(line, ">")
            closeBracketLoc = InStr(line, "<")
            miles = Mid(line, bracketLoc + 1, closeBracketLoc - 1)
            haulMiles = Val(miles)
            tb_Miles.Text = miles

        End If
    Next

答案 1 :(得分:0)

我看到你已经回答了自己的问题,但我会在你感兴趣的时候添加另一个答案。如果您使用可以通过NuGet添加到项目中的HtmlAgilityPack,而不是编写自己的解析逻辑,您可以更轻松地获得里程:https://www.nuget.org/packages/HtmlAgilityPack/

        Dim htmlDoc As New HtmlAgilityPack.HtmlDocument
        htmlDoc.LoadHtml(wbMaps.Document.Body.InnerHtml)
        miles = htmlDoc.DocumentNode.SelectSingleNode("//td[@data-tag='descriptionDistance']").InnerHtml