我需要使用 Visual Basic 获取网页上两个跨度标签之间的文本。
<span>Some Text</span>
我知道一定有办法,但我似乎找不到。
这是针对我不拥有的网站。
我需要使用 Visual Basic 获取网页上两个跨度标签之间的文本。
<span>Some Text</span>
我知道一定有办法,但我似乎找不到。
这是针对我不拥有的网站。
给你的跨度一个 ID 和runat="server"
属性,例如
<span id="xMySpan" runat="server">Some Text</span>
然后您将能够在服务器端代码中检索它,例如
Dim sVar As String = xMySpan.InnerHtml
我做了这个脚本,希望它会有所帮助
我有:
获取 youtube 网址的文本框 [urlVideo]
加载页面的按钮 [btn_loadViews]
一个 webBrowser 控件 [webBrowser1]
和一个标签来显示文本 [lb_views]
我没有验证任何内容,所以这只是我如何从网站获取文本的一个示例。如果有另一种方法可以做到这一点,我也想知道。=)
Private Sub btn_loadViews_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_loadViews.Click
WebBrowser1.Navigate(urlVideo.Text)
WaitForPageLoad()
getViews()
End Sub
Private Sub getViews()
Try
Dim version = FileVersionInfo.GetVersionInfo("c:\windows\system32\ieframe.dll")
'Depending on the navigator version, google's server sends diffetent pages, so
'Here Detect ie version
If version.ProductVersion < "8" Then
lb_views.Text = WebBrowser1.Document.GetElementById("vc").FirstChild.InnerText
Else
lb_views.Text = WebBrowser1.Document.GetElementById("watch7-views-info").FirstChild.InnerText
End If
Catch ex As Exception
MsgBox(ex.ToString)
Application.Exit()
End Try
End Sub
Private Property pageready As Boolean = False
Private Sub WaitForPageLoad()
AddHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
While Not pageready
Application.DoEvents()
End While
pageready = False
End Sub
Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
pageready = True
RemoveHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
End If
End Sub
给 span 分配一个 ID 怎么样?如果你这样做,那么这有效:
TextBox1.Text = _
WebBrowser1.Document.GetElementById("spanID").GetAttribute("innerText")
使用这种格式:
<span id="spanID">...</span>
编辑:按内容过滤:
$("span").filter(function(){
return $(this).html() == "a";
})
将与此一起工作:
<span>a</span>
您是从整个 HTML 文档中提取它还是只是从上面引用的文本中提取它?
如果它只是上面的(并且您已经过滤掉了其他 HTML),那么您可以使用 LEFT() 和 RIGHT() 的组合来剪掉末端,或者使用 REPLACE() 来摆脱这两个标签。
Dim WithEvents hDoc As HTMLDocument
Set hDoc = WebBrowser1.Document
Dim strValue As String
strValue = hDoc.getElementsByName("so").Item(0).Value