2013-07-29 140 views
0

我需要使用visual basic在网页上的两个span标签之间获取文本。VB从html元素中获取文本

<span>Some Text</span> 

我知道必须有办法,但我似乎无法找到它。

这是我没有的网站。

回答

1

给你的范围一个ID和runat="server"属性例如

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

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

Dim sVar As String = xMySpan.InnerHtml 
+0

你是什么意思?你想做一些屏幕报废? –

0

怎么样给ID分配一个ID?如果这样做,那么这个作品:

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

使用这种格式:

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

编辑:通过内容过滤:

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

将与此工作:

<span>a</span> 
+0

我试图选择的范围确实有一个ID,但我需要通过span标签内的文本来选择它 – user2620851

+0

请参阅我的关于按内容过滤的编辑。 – eclipsis

+0

以及无论如何做到这一点,而无需编辑HTML文档@Eric? – user2620851

0

你是从整个HTML d中提取的或者只是上面引用的文字?

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

+0

我想从整个文件从外部文本 – user2620851

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