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

Excel无法批量导入网页ETF列表数据的技术求助(Power BI可正常导入)

解决Excel中批量获取ETFDB美国ETF列表全页数据的问题

1. 先解决Excel无法导入网页表格的问题

如果Excel直接通过「数据>自网站」导入时找不到目标表格,改用Power Query编辑器手动编写抓取逻辑:

  • 打开Excel,点击「数据>获取数据>从其他源>空查询」
  • 进入Power Query编辑器后,点击「高级编辑器」,替换原有代码为单页抓取代码(优先验证单页能否成功获取数据)

2. 修改Power Query实现批量分页爬取

你之前的核心问题是循环时未动态修改URL中的页码参数,导致重复请求第一页。以下是修正后的完整逻辑和代码:

完整Power Query代码

let
    // 生成1到69的页码列表
    PageNumbers = List.Generate(() => 1, each _ <= 69, each _ + 1),
    // 遍历每个页码,抓取对应页面的ETF表格
    FetchedPages = List.Transform(PageNumbers, (Page) =>
        let
            // 构造带页码参数的目标URL
            Source = Web.Page(Web.Contents("https://etfdb.com/etfs/country/us/?page=" & Text.From(Page))),
            // 筛选出名为"ETF list"的表格(若名称不符,可在单页测试时查看Source中的实际表格名)
            TargetTable = Table.SelectRows(Source, each [Name] = "ETF list"),
            ETFData = TargetTable{0}[Data]
        in
            ETFData
    ),
    // 合并所有页面的表格为完整数据集
    CombinedTable = Table.Combine(FetchedPages)
in
    CombinedTable

关键说明

  • 动态页码:通过Text.From(Page)将页码插入URL参数,确保每次请求对应页面
  • 表格匹配:若代码中"ETF list"与实际表格名称不符,可先抓取单页数据,查看Source列表中的表格名称后替换
  • 反爬应对:如果出现请求被限制,可在List.Transform中添加Function.InvokeAfter设置请求延迟,避免触发网站反爬机制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:22:40