Я пытаюсь получить все значения имен участников из списка с помощью (span class = text), а также значения их коротких имен с помощью (class = contenu) и добавить их в другой столбец элемента списка, который будет отображаться как аналогвеб-страница.Пользователь может видеть полное имя участника, а также может щелкнуть по бренду отдельного участника (короткое имя), чтобы получить более подробную информацию.
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
Попробуйте упростить проблему;
Эточасть с полной страницы, которая показывает имена участников и их бренды (некоторые из них имеют один, а другие - два, три или четыре)
, как показано ниже;Mekar srl (Имя участника) имеет 4 различных бренда, разделенных запятой (Eden, Mekar VENCO, Venticlima)
MEKAR srl (EDEN, MEKAR, VENCO, VENTILCLIMA)
, но некоторые из нихтолько один;
как в примере ниже;Menegra Gmbh (имя участника) имеет только одну марку, как Menegra MENERGA GmbH (Menerga)
Поэтому я постараюсь записать эти данные почти в той же логике со страницей в виде списка;
1-я колонкабудет указывать имя участника и с той же строкой во втором столбце будет отображаться название бренда (или, если более одного, третьего и четвертого столбца одной строки)
Вне зависимости от списка, мне нужно получить представлениехранить данные, которые я получаю с веб-страницы, для записи в строку типа массива и показывать их позже в виде списка.
С помощью приведенного выше кода я непрерывно считываю все узлы и теряю связи между ними (например,имя участника с несколькими брендами)
Надеюсь, это утверждение будет более понятным, и я также надеюсь снова получить дополнительную поддержку
С уважением
Али