如何将iframe的内容加载到visual basic中?

时间:2017-11-27 14:21:23

标签: html vb.net iframe

我有一个网页,它只是一个包含多位信息的表格。但是,该表的源是通过iframe,而iframe又是由获取信息的json脚本驱动的。如果我右键单击iframe中的一些数据(在firefox中)并选择"查看选择源",我只能看到iframe的来源。

这就是我的内容。我想做的是,在VB.net中有一个函数可以拉入这个页面,抓取iframe,从中提取表格,然后放入值表中的某些数组表示"表值(列,行)"然后,我可以在VB中处理。

我已经看过很多关于如何引入一个简单的html页面的例子,但是从iframe中提取是我甚至不知道从哪里开始的地方。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

更新了答案

您提供的网站没有iframe,但如果这是您要使用的网站,可以采用以下方式。如果我理解,你想要获取网站,从表中提取数据(分数),然后处理它(显示它,做一些计算等):

所以我检查了源代码,并使用Postman(https://www.getpostman.com/)做了一个GET请求,看到它很干净的HTML: site source code

对于这个例子,我刚刚选择了一个具有1-2-3分数的div - 该类似乎是Whs(nw) D(tbc) Va(m) Fw(b) Fz(14px) - 不确定它有多可靠,但它对此有用。

因此在VB.Net中有多种方法可以解析它,因为这只是一个例子,我走了简单的路线并使用了HtmlAgilityPack(https://www.nuget.org/packages/HtmlAgilityPack/) - 这是一个快速而肮脏的例子,只是吐出这些分数到现在的文本框: code running

代码:

Imports System.Net
Imports HtmlAgilityPack

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Create a WebRequest object w/ our site
        Dim req As WebRequest = WebRequest.Create("https://sports.yahoo.com/soccer/premier-league/scoreboard/")

        Dim doc As New HtmlDocument()
        Using res As WebResponse = req.GetResponse() ' grab the HTML
            doc.Load(res.GetResponseStream()) ' load it into our HtmlDocument
        End Using

        ' Grab all the divs with a certain class
        Dim nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//div[@class='Whs(nw) D(tbc) Va(m) Fw(b) Fz(14px)']")
        If nodes IsNot Nothing Then
            For Each node As HtmlNode In nodes
                ' do the things
                TextBox1.AppendText(node.InnerText & Environment.NewLine)
            Next
        End If
    End Sub
End Class