Vb.net WebBrowser-从无ID、无标记名、无类的通用表中获取/读取数据

Vb.net WebBrowser-从无ID、无标记名、无类的通用表中获取/读取数据,vb.net,visual-studio,Vb.net,Visual Studio,作为标题,我试图从页面中的一些表中读取数据。 我经常使用WebBrowser1.Document.GetElementById来处理许多类似的事情,但在这种情况下,我无法访问数据,因为在这个页面中,所有表都是由 以下是我试图访问的内容: Ryzen 3000-主流 Ryzen 5 3500 3.6 - 4.1 Ryzen 5 3500X 3.6 - 4.1 Ryzen 53600 3.6 - 4.2 Ryzen 5 Pro 3600 3.6 - 4.2 Ryzen 5 3600X 3.8 -

作为标题,我试图从页面中的一些表中读取数据。
我经常使用
WebBrowser1.Document.GetElementById
来处理许多类似的事情,但在这种情况下,我无法访问数据,因为在这个页面中,所有表都是由

以下是我试图访问的内容:


Ryzen 3000-主流
Ryzen 5 3500
3.6 - 4.1
Ryzen 5 3500X
3.6 - 4.1
Ryzen 53600
3.6 - 4.2
Ryzen 5 Pro 3600
3.6 - 4.2
Ryzen 5 3600X
3.8 - 4.4
Ryzen 5 3600XT
3.8 - 4.5

我建议您使用HtmlAgilityPack和分析公式

示例代码:
查询特定的
th
标签文本:

    Dim doc As HtmlAgilityPack.HtmlDocument
    Dim path As String = "https://www..."
    Dim web As New HtmlWeb
    doc = web.Load(path)
    Dim node As HtmlAgilityPack.HtmlNode
   'The text within the fourth <th></th>
    node = doc.DocumentNode.SelectNodes("//table[@class='table']//th")(3) 
    Dim st As String = node.InnerText  'Ryzen 5 Pro 3600
结果:

嗯,
的孩子。您可以按标记名解析元素。
className
是元素的一个属性。当您获得
时,按标记名解析其子元素,并获得具有属性
className=“table”
的第一个
元素。然后用标记名
解析其子元素,并读取每个
子元素。只需检入以查看提供的信息是否有用。请让我们知道你是否需要进一步的帮助。我研究了一下这个HTML敏捷包。我试过你的代码,如果我只把剪下的HTML保存在一个空的HTML文件中,效果很好,但是如果我试图将相同的VB代码应用于整个网页,效果就不好了。我得到的结果是所有设计的数据,但在粗略的视图中,都是一行。因为我很难调整它,所以我想使用一些泛型regex来捕获和重新排序我想要的数据,例如,第一个regex应该捕获“Ryzen 5 3500”+所有文本直到“R”,然后用另一个VB代码删除“R”,然后继续到最后一行。您可以在获取数据后使用正则表达式截取文本。请先抓住,然后拦截。
    Dim doc As HtmlAgilityPack.HtmlDocument
    Dim path As String = "https://www..."
    Dim web As New HtmlWeb
    doc = web.Load(path)
    Dim nodes As HtmlAgilityPack.HtmlNodeCollection
    nodes = doc.DocumentNode.SelectNodes("//table[@class='table']//tr")
    For Each node As HtmlNode In nodes
        RichTextBox1.AppendText(node.InnerText)
    Next