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

使用PowerShell抓取指定页面首个表格并导出CSV的问题求助

解决方案:提取首个表格并导出为CSV

你的代码目前获取的是表格容器的HTML内容,而非结构化的表格数据。以下是修正后的PowerShell脚本,可直接提取目标页面首个表格的数据并导出为CSV:

# 获取网页内容
$WebResponse = Invoke-WebRequest -Uri "https://www.interactivebrokers.co.uk/en/trading/margin-futures-fops.php"

# 定位首个带table-responsive类的容器内的表格
$targetTable = $WebResponse.AllElements | 
    Where-Object {$_.class -match 'table-responsive'} | 
    Select-Object -First 1 | 
    ForEach-Object {
        $_.AllElements | Where-Object {$_.tagName -eq 'TABLE'} | Select-Object -First 1
    }

# 提取表头文本
$headers = $targetTable.AllElements | 
    Where-Object {$_.tagName -eq 'TH'} | 
    ForEach-Object { $_.InnerText.Trim() }

# 提取数据行并转换为结构化对象
$tableData = foreach ($row in ($targetTable.AllElements | Where-Object {$_.tagName -eq 'TR'} | Select-Object -Skip 1)) {
    $cells = $row.AllElements | 
        Where-Object {$_.tagName -eq 'TD'} | 
        ForEach-Object { $_.InnerText.Trim() }
    
    # 过滤单元格数量与表头不匹配的异常行
    if ($cells.Count -eq $headers.Count) {
        $rowObj = [ordered]@{}
        for ($i=0; $i -lt $headers.Count; $i++) {
            $rowObj[$headers[$i]] = $cells[$i]
        }
        [PSCustomObject]$rowObj
    }
}

# 导出为CSV文件
$tableData | Export-Csv -Path "IB_Futures_Margin.csv" -NoTypeInformation -Encoding UTF8

关键说明:

  • 精准定位表格:先找到table-responsive容器,再从中提取内部的<table>元素,避免获取冗余的容器HTML代码。
  • 结构化转换:将表头和每行单元格文本映射为PowerShell自定义对象,保证CSV的列与数据行一一对应。
  • 异常处理:添加单元格数量校验,跳过结构不一致的行,避免导出错误数据。
  • 编码兼容:使用UTF8编码导出,避免中文或特殊字符出现乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:33:14