Ich versuche, alle Teilnehmer Name Wert aus der Liste mit (span class = Text) und auch ihre Kurzname Wert mit (class = contenu) und fügen Sie sie zu den verschiedenen Spalten des Listenansicht Element, das als similiart auf der Webseite angezeigt wird . Der Benutzer kann den vollständigen Namen des Teilnehmers sehen und auch auf die Marke des einzelnen Teilnehmers (Kurzname) klicken, um weitere Details zu erhalten.
Imports HtmlAgilityPack
Public Class Form1
Dim web As New HtmlWeb
Dim doc As HtmlDocument = web.Load("http://www.eurovent-certification.com/en/Certified_products/Access_by_programme.php?rub=04&srub=01&ssrub=&lg=en&select_prog=AHU")
Dim ParticipantNodesShort As HtmlNodeCollection = doc.DocumentNode.SelectNodes("/html/body/table/tr/td[2]/table[4]/tr[2]/td[2]//a[@class='contenu']")
Dim ParticipantNodesLong As HtmlNodeCollection = doc.DocumentNode.SelectNodes("/html/body/table/tr/td[2]/table[4]/tr[2]/td[2]//span[@class='texte']")
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
' Adding ListView Columns
ListView2.Columns.Add("Participant's contact - Full Name", 250, HorizontalAlignment.Left)
ListView2.Columns.Add("Brand Name", 100, HorizontalAlignment.Left)
ListView2.Columns.Add("Brand Name", 100, HorizontalAlignment.Left)
ListView2.Columns.Add("Brand Name", 100, HorizontalAlignment.Left)
ListView2.Columns.Add("Brand Name", 100, HorizontalAlignment.Left)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim web As New HtmlWeb
Dim doc As HtmlDocument = web.Load("http://www.eurovent-certification.com/en/Certified_products/Access_by_programme.php?rub=04&srub=01&ssrub=&lg=en&select_prog=AHU")
Dim ParticipantNodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("/html/body/table/tr/td[2]/table[4]/tr[2]/td[2]//span[@class='texte'] | /html/body/table/tr/td[2]/table[4]/tr[2]/td[2]//a[@class='contenu']")
Dim participantname(20) As String
Dim brandname(50) As String
Dim participantcount As Integer = 0
Dim brandcount As Integer = 0
For Each item As HtmlNode In ParticipantNodes
If item.Name = "span" Then
Debug.Print(participantname(participantcount))
participantname(participantcount) = item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "")
participantcount = participantcount + 1
Else
If Not item.Attributes.Count = 3 Then
brandname(brandcount) &= String.Format(" [{0}]", item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, ""))
brandcount = brandcount + 1
End If
End If
ListView2.Items.Add(participantname(participantcount) & " " & brandname(brandcount))
Next
End Sub
End Class
Versuchen Sie, das Problem zu vereinfachen;
Dies ist der Teil von der ganzen Seite, der die Namen der Teilnehmer und ihre Marken zeigt (einige von ihnen haben einen und einige andere zwei, drei oder vier)
Wie unten ; Mekar srl (Participant Name) hat 4 verschiedene Marken, die durch Komma getrennt sind (Eden, Mekar VENCO, Venticlima)
MEKAR srl (EDEN, MEKAR, VENCO, VENTILKLIMA)
aber einige von ihnen nur eins;
wie unten Beispiel; Menegra Gmbh (Name des Teilnehmers) hat nur eine Marke als Menegra MENERGA GmbH (Menerga)
Also werde ich versuchen, diese Daten fast die gleiche Logik mit der Seite zu einem Listenansicht zu schreiben;
In der ersten Spalte wird der Name des Teilnehmers aufgeführt und in der zweiten Spalte wird der Markenname aufgeführt (oder falls mehr als eine, dritte und vierte Spalte derselben Zeile).
Unabhängig von der Listview muss ich eine Idee bekommen, um die Daten, die ich von der Webseite bekomme, aufzunehmen, um sie am Array-Typ String aufzuzeichnen und sie später in der Listenansicht anzuzeigen.
Mit dem obigen Code lese ich alle Knoten kontinuierlich und habe die Beziehungen zwischen ihnen verloren (wie der Name des Teilnehmers mit mehreren Marken)
Ich hoffe, dass diese Aussage klarer wird, ich hoffe auch, dass ich wieder mehr Unterstützung bekomme
Grüße
Ali
Ok, also habe ich kurz auf ListView gegoogelt ... hier sind die Ergebnisse.
Imports HtmlAgilityPack
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
ListView2.Columns.Add("Participant's contact - Full Name", 250, HorizontalAlignment.Left)
ListView2.Columns.Add("Brand Name", 100, HorizontalAlignment.Left)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim web As New HtmlWeb
Dim doc As HtmlDocument = web.Load("http://www.eurovent-certification.com/en/Certified_products/Access_by_programme.php?rub=04&srub=01&ssrub=&lg=en&select_prog=AHU")
Dim ParticipantNodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("/html/body/table/tr/td[2]/table[4]/tr[2]/td[2]//span[@class='texte'] | /html/body/table/tr/td[2]/table[4]/tr[2]/td[2]//a[@class='contenu']")
Dim ColumnCount As Integer = 1
Dim TempListItem As New ListViewItem
For Each item As HtmlNode In ParticipantNodes
If item.Name = "span" Then
ColumnCount = 1
Dim Name As String = item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "")
TempListItem = ListView1.Items.Add(Name)
Else
If Not item.Attributes.Count = 3 Then
ColumnCount += 1
If ColumnCount > ListView1.Columns.Count Then
ListView1.Columns.Add("Brand Name", 100, HorizontalAlignment.Left)
End If
Dim SubName As String = item.InnerText.Replace(vbLf, "").Replace(vbCr, "").Replace(vbTab, "")
TempListItem.SubItems.Add(SubName)
End If
End If
Next
Dim breaker = 0
End Sub
End Class
Dies ist Teil der Ausgabe:
[Menu] [AHU]
List of participants to the certification programme for Air Handling Units (AHU) :
A.T.C Air Trade Centre Havaland?rma Sistemleri San. ve Tic. Ltd. ?ti. [ATC]
ACS KLIMA Imalat Sanayi ve Ticaret Ltd. Sti [ACS]
AERA Iklimlendirme Teknolojileri San. ve Tic AS [AERA]
AIRCALO [AIRCALO]
AIRLAN INDUSTRIAL S.A. [AIRLAN]
Airtechnic Hatzoudis E.P.E. [AIRTECHNIC]
AL SALEM YORK Manufacturing Co,Ltd [YORK]
AL-KO THERM GmbH [ALKO]
ALARKO CARRIER San. Tic. A.S. [ALARKO] [CARRIER]
Ich habe listview nicht so oft verwendet, daher bin ich nicht damit vertraut, und da Sie eine variable Anzahl von Spalten haben, würde ich diese Ergebnisse irgendwo zwischenspeichern und dann prüfen, wie viele Spalten ich machen muss. Dann einfach die Ergebnisse in der Listenansicht ablegen.