You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中用webbrowser控件按宽度获取网页表格指定列文本

方案可行性结论

该方案是可行的。你可以通过匹配<td>元素的宽度属性/样式值,定位到目标列后提取文本。

页面结构参考

页面结构参考图

实现思路
  • 等待WebBrowser控件完全加载目标网页,避免DOM元素未渲染导致获取失败
  • 定位到id为row_resultsTable_4的目标表格元素
  • 遍历该表格下所有元素,匹配宽度为200px的元素
  • 提取匹配成功的元素的InnerText属性得到目标列文本
完整代码示例

下面的代码适配VB.NET新手,附带详细注释,直接放到对应事件中即可运行:

' 请将该代码放在WebBrowser控件的DocumentCompleted事件中,确保页面加载完成后执行
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    ' 过滤多次触发的情况,仅在目标页面完全加载后执行逻辑
    If e.Url <> WebBrowser1.Url Then Exit Sub
    If WebBrowser1.Document Is Nothing Then Exit Sub

    ' 1. 定位id为row_resultsTable_4的目标表格
    Dim targetTable As HtmlElement = WebBrowser1.Document.GetElementById("row_resultsTable_4")
    If targetTable Is Nothing Then
        MessageBox.Show("未找到目标表格,请检查表格ID是否正确")
        Exit Sub
    End If

    ' 2. 遍历表格下所有td元素,匹配宽度为200px的列
    Dim targetColTexts As New List(Of String)
    For Each td As HtmlElement In targetTable.GetElementsByTagName("td")
        ' 兼容两种宽度定义方式:直接写width属性、在style中定义宽度
        Dim widthAttr As String = td.GetAttribute("width").Trim().ToLower()
        Dim styleAttr As String = td.GetAttribute("style").Trim().ToLower()

        ' 匹配200px宽度的td元素,兜底判断取浏览器渲染后的实际像素宽度
        If (widthAttr = "200" OrElse widthAttr = "200px") _
            OrElse styleAttr.Contains("width:200px") _
            OrElse styleAttr.Contains("width: 200px") _
            OrElse td.OffsetRectangle.Width = 200 Then
            ' 3. 提取文本并过滤空值
            Dim colText As String = td.InnerText.Trim
            If Not String.IsNullOrEmpty(colText) Then
                targetColTexts.Add(colText)
            End If
        End If
    Next

    ' 测试输出:可根据需求修改为写入文本框、存入文件等操作
    If targetColTexts.Count > 0 Then
        MessageBox.Show("提取到的目标列内容:" & vbCrLf & String.Join(vbCrLf, targetColTexts))
    Else
        MessageBox.Show("未找到宽度为200px的目标列")
    End If
End Sub
补充使用说明
  • 需要触发页面加载时,可在按钮点击或窗体加载事件中添加代码:WebBrowser1.Navigate("替换为你的目标网页地址")
  • 如果需要保留列内容的HTML格式,可将td.InnerText替换为td.InnerHtml
  • 如果目标列宽度存在1-2px的渲染误差,可将td.OffsetRectangle.Width = 200调整为范围判断,比如td.OffsetRectangle.Width >= 198 AndAlso td.OffsetRectangle.Width <= 202

内容的提问来源于stack exchange,提问作者Daniel André

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:27:01