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

如何用PowerShell解析Invoke-WebRequest获取的HTML表格数据

解析HTML表格提取结构化数据的PowerShell方案

方法一:直接通过ParsedHtml定位表格元素

无需单独提取InnerHTML,直接利用ParsedHtml的DOM操作能力提取表头和数据:

# 定位目标表格(假设页面仅一个表格,多表格需调整索引值)
$targetTable = $GroupRequests.ParsedHtml.getElementsByTagName("table")[0]

# 提取表头文本
$tableHeaders = @()
foreach ($headerCell in $targetTable.getElementsByTagName("th")) {
    $tableHeaders += $headerCell.innerText.Trim()
}

# 遍历数据行并整理为结构化对象
$tableData = @()
foreach ($row in $targetTable.getElementsByTagName("tr")) {
    # 跳过表头行(表头用<th>标记时)
    if ($row.getElementsByTagName("th").Count -gt 0) { continue }

    $rowContent = [ordered]@{}
    $cells = $row.getElementsByTagName("td")
    for ($i=0; $i -lt $tableHeaders.Count; $i++) {
        if ($i -lt $cells.Count) {
            $rowContent[$tableHeaders[$i]] = $cells[$i].innerText.Trim()
        } else {
            $rowContent[$tableHeaders[$i]] = $null
        }
    }
    $tableData += [PSCustomObject]$rowContent
}

# 输出整理后的数据
$tableData

方法二:借助第三方模块简化操作

如果需要更简洁的处理流程,可安装PowerShellHtmlUtility模块实现快速转换:

# 首次使用需安装模块
Install-Module -Name PowerShellHtmlUtility -Scope CurrentUser -Force

# 直接将HTML内容转为结构化对象
$structuredData = $GroupRequests.Content | ConvertFrom-Html -TableIndex 0
$structuredData

关键注意点

  • 若页面存在多个表格,修改[0]索引值定位目标表格
  • 部分网站表头用<td>而非<th>,需调整表头提取逻辑(比如取第一行的<td>作为表头)
  • 若单元格包含嵌套HTML(如链接、换行),可按需提取innerHTML或特定子元素内容

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:35:20