正在同时解析HTML个不同分区的表写入listview
Parsing HTML tables with different divisions at same time to write on listview
试图从位于不同 div 的 html table 中读取数据,但无法同时获取(从第一个 table 开始解析并跳转到第二个,我需要一起读取同一级别的行数据)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim web As New HtmlWeb
Dim docmech As HtmlDocument = web.Load("http://www.eurovent-certification.com/en/Certified_products/Access_by_programme.php?lg=en&rub=04&srub=01&select_prog=AHU&select_partic=664&select_marque=YORK&select_class=MB+%2F+MB+%2F+MECH")
Dim MechNodes As HtmlNodeCollection = docmech.DocumentNode.SelectNodes("/html/body/table/tr/td[2]/table[6]/tr[1]/td[2]/div[2]/table//nobr[a[@class='certificat-pdf']] | /html/body/table/tr/td[2]/table[6]/tr[1]/td[2]/div[3]/table//td[@class='tabGrisClair > normal']")
Dim ColumnCount As Integer = 1
Dim TempListItem As New ListViewItem
If Not IsNothing(MechNodes) Then
For Each item As HtmlNode In MechNodes
If item.Name = "nobr" And item.InnerText <> "" And item.Attributes.Count = 0 Then
Dim Name As String = item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "").Replace(" ", "")
TempListItem = ListView1.Items.Add(Name)
Else
If item.Attributes("class").Value = "tabGrisClair > normal" Then
Dim SubName As String = item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "")
TempListItem = ListView1.Items.Add(SubName)
End If
End If
Next
End If
table 的 Xpath 信息;
- 第一个 table 位于第二个 div 并且行号从 4 到 10 和 1 列 )
/html/body/table/tr/td[2]/table[6]/tbody/tr[1]/td[2]/div[2]/table/tr[ 4]/td/nobr ---> PU3055(目标文本)
- 第二个 table 位于第三个 div 并且行号从 4 到 10 但有 14 列)
/html/body/table/tr/td[2]/table[6]/tr[1]/td[2]/div[3]/table/tbody/tr[4]/td[2] ---> D1(M)(目标文本)
如何在同一列表视图中添加两个 table 的数据(网页中显示的行号相同?
我得到的结果是这样的;Parsing result from the code
而不是目标结果:
Target result from the web page
最简单的方法是每个循环两个。
添加模型(项目)后,遍历它们或类似的东西,然后添加列(子项目)。
所有内容总共 15 行。
或者,您可以创建两个集合(A 和 B),然后逐一读取每个集合(如 A1、B1、A2、B2...等)。
完成:
试图从位于不同 div 的 html table 中读取数据,但无法同时获取(从第一个 table 开始解析并跳转到第二个,我需要一起读取同一级别的行数据)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim web As New HtmlWeb
Dim docmech As HtmlDocument = web.Load("http://www.eurovent-certification.com/en/Certified_products/Access_by_programme.php?lg=en&rub=04&srub=01&select_prog=AHU&select_partic=664&select_marque=YORK&select_class=MB+%2F+MB+%2F+MECH")
Dim MechNodes As HtmlNodeCollection = docmech.DocumentNode.SelectNodes("/html/body/table/tr/td[2]/table[6]/tr[1]/td[2]/div[2]/table//nobr[a[@class='certificat-pdf']] | /html/body/table/tr/td[2]/table[6]/tr[1]/td[2]/div[3]/table//td[@class='tabGrisClair > normal']")
Dim ColumnCount As Integer = 1
Dim TempListItem As New ListViewItem
If Not IsNothing(MechNodes) Then
For Each item As HtmlNode In MechNodes
If item.Name = "nobr" And item.InnerText <> "" And item.Attributes.Count = 0 Then
Dim Name As String = item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "").Replace(" ", "")
TempListItem = ListView1.Items.Add(Name)
Else
If item.Attributes("class").Value = "tabGrisClair > normal" Then
Dim SubName As String = item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "")
TempListItem = ListView1.Items.Add(SubName)
End If
End If
Next
End If
table 的 Xpath 信息;
- 第一个 table 位于第二个 div 并且行号从 4 到 10 和 1 列 )
/html/body/table/tr/td[2]/table[6]/tbody/tr[1]/td[2]/div[2]/table/tr[ 4]/td/nobr ---> PU3055(目标文本)
- 第二个 table 位于第三个 div 并且行号从 4 到 10 但有 14 列)
/html/body/table/tr/td[2]/table[6]/tr[1]/td[2]/div[3]/table/tbody/tr[4]/td[2] ---> D1(M)(目标文本)
如何在同一列表视图中添加两个 table 的数据(网页中显示的行号相同?
我得到的结果是这样的;Parsing result from the code
而不是目标结果: Target result from the web page
最简单的方法是每个循环两个。
添加模型(项目)后,遍历它们或类似的东西,然后添加列(子项目)。
所有内容总共 15 行。
完成: