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
相关产品推荐
相关产品推荐

