我有一个网页,它只是一个包含多位信息的表格。但是,该表的源是通过iframe,而iframe又是由获取信息的json脚本驱动的。如果我右键单击iframe中的一些数据(在firefox中)并选择"查看选择源",我只能看到iframe的来源。
这就是我的内容。我想做的是,在VB.net中有一个函数可以拉入这个页面,抓取iframe,从中提取表格,然后放入值表中的某些数组表示"表值(列,行)"然后,我可以在VB中处理。
我已经看过很多关于如何引入一个简单的html页面的例子,但是从iframe中提取是我甚至不知道从哪里开始的地方。任何帮助表示赞赏
答案 0 :(得分:1)
更新了答案
您提供的网站没有iframe,但如果这是您要使用的网站,可以采用以下方式。如果我理解,你想要获取网站,从表中提取数据(分数),然后处理它(显示它,做一些计算等):
所以我检查了源代码,并使用Postman(https://www.getpostman.com/)做了一个GET请求,看到它很干净的HTML:
对于这个例子,我刚刚选择了一个具有1-2-3分数的div - 该类似乎是Whs(nw) D(tbc) Va(m) Fw(b) Fz(14px)
- 不确定它有多可靠,但它对此有用。
因此在VB.Net中有多种方法可以解析它,因为这只是一个例子,我走了简单的路线并使用了HtmlAgilityPack(https://www.nuget.org/packages/HtmlAgilityPack/) - 这是一个快速而肮脏的例子,只是吐出这些分数到现在的文本框:
代码:
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