在 WebBrowser 控件中使用 Bing 地图获取两地之间的英里数
Get miles between two places using Bing Maps in WebBrowser control
确定两地之间的方向后,是否可以从 HTML 代码中提取英里数?获得指示后,我可以在 IE 中的页面源代码中看到英里数,我正在尝试使用以下方法提取它显示的英里数。这可能很容易,但我很难过。
多一点信息。我能够通过 WebBrowser 控制获取往返方向的位置,并像在 IE 中一样显示方向。我想在文本框中获取里程数。
html代码
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
我明白了。我用过这个:
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
我看到你已经回答了你自己的问题,但如果你感兴趣,我会添加另一个答案。如果您使用 HtmlAgilityPack,您可以通过 NuGet 添加到您的项目,而不是编写您自己的解析逻辑,您可以更轻松地完成工作: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
确定两地之间的方向后,是否可以从 HTML 代码中提取英里数?获得指示后,我可以在 IE 中的页面源代码中看到英里数,我正在尝试使用以下方法提取它显示的英里数。这可能很容易,但我很难过。
多一点信息。我能够通过 WebBrowser 控制获取往返方向的位置,并像在 IE 中一样显示方向。我想在文本框中获取里程数。
html代码
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
我明白了。我用过这个:
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
我看到你已经回答了你自己的问题,但如果你感兴趣,我会添加另一个答案。如果您使用 HtmlAgilityPack,您可以通过 NuGet 添加到您的项目,而不是编写您自己的解析逻辑,您可以更轻松地完成工作: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