0

我需要使用 Visual Basic 获取网页上两个跨度标签之间的文本。

<span>Some Text</span>

我知道一定有办法,但我似乎找不到。

这是针对我不拥有的网站。

4

5 回答 5

1

给你的跨度一个 ID 和runat="server"属性,例如

<span id="xMySpan" runat="server">Some Text</span>

然后您将能够在服务器端代码中检索它,例如

Dim sVar As String = xMySpan.InnerHtml
于 2013-07-29T21:32:07.493 回答
0

我做了这个脚本,希望它会有所帮助

我有:

  • 获取 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
于 2013-12-03T06:14:59.777 回答
0

给 span 分配一个 ID 怎么样?如果你这样做,那么这有效:

TextBox1.Text = _
 WebBrowser1.Document.GetElementById("spanID").GetAttribute("innerText")

使用这种格式:

<span id="spanID">...</span>

编辑:按内容过滤:

$("span").filter(function(){
    return $(this).html() == "a";
})

将与此一起工作:

<span>a</span>
于 2013-07-29T21:33:51.657 回答
0

您是从整个 HTML 文档中提取它还是只是从上面引用的文本中提取它?

如果它只是上面的(并且您已经过滤掉了其他 HTML),那么您可以使用 LEFT() 和 RIGHT() 的组合来剪掉末端,或者使用 REPLACE() 来摆脱这两个标签。

于 2013-07-29T21:38:06.223 回答
-2
Dim WithEvents hDoc As HTMLDocument
Set hDoc = WebBrowser1.Document
Dim strValue As String
strValue = hDoc.getElementsByName("so").Item(0).Value
于 2019-10-29T13:50:40.590 回答