Я использую следующий код:
Dim cl As WebClient = New WebClient()
Dim html As String = cl.DownloadString(url)
Dim doc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument()
doc.LoadHtml(html)
Dim table As HtmlNode = doc.DocumentNode.SelectSingleNode("//table[@class='table']")
For Each row As HtmlNode In table.SelectNodes(".//tr")
Dim inner_text As String = row.InnerHtml.Trim()
Next
Мой inner_text
для каждой строки выглядит следующим образом, с разными годами и данными:
"<th scope="row">2015<!-- --> RG Journal Impact</th><td>6.33</td>"
Каждая строка имеетЭлемент th
и элемент td
, и я пробовал разные способы получения значения, но я не могу тянуть их один за другим, зацикливая коллекцию столбцов.Как я могу получить только элемент th
и элемент td
, используя правильный синтаксис Xpath?
Пока я не смогу использовать лучший код, я буду использовать стандартные функции синтаксического анализа:
Dim hname As String = row.InnerHtml.Trim()
Dim items() As String = hname.Split("</td>")
Dim year As String = items(1).Substring(items(1).IndexOf(">") + 1)
Dim value As String = items(4).Substring(items(4).IndexOf(">") + 1)
If value.ToLower.Contains("available") Then
value = ""
End If