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

如何用Excel Power Query抓取Investing.com2020年至今的经济日历数据?

Power Query抓取Investing.com经济日历完整数据方案

核心问题分析

直接在URL后加date_from/date_to参数无效,是因为该页面的日历数据通过POST请求动态加载,而非GET请求传递参数。需找到正确的API接口和请求参数格式。

解决方案步骤

1. 确认目标API接口

打开浏览器开发者工具(F12),切换到「网络」标签后刷新页面:

  • 筛选XHR/Fetch请求,找到名称类似getCalendarFilteredData的POST请求
  • 查看该请求的请求体(RequestBody)和请求头(Headers),确认参数规则

2. 在Power Query中构造请求

新建空白查询,粘贴以下M代码(按需调整参数):

let
    // 自定义日期范围:起始设为2020-01-01,结束为当前日期
    StartDate = #date(2020, 1, 1),
    EndDate = DateTime.Date(DateTime.LocalNow()),
    // 转换为网站要求的Unix时间戳(秒)
    StartTimestamp = Number.From(StartDate) * 86400,
    EndTimestamp = Number.From(EndDate) * 86400,
    // 构造请求体,customEvents对应原URL的1762,timeZone按需调整
    RequestBody = Json.FromValue([
        dateFrom = StartTimestamp,
        dateTo = EndTimestamp,
        timeZone = 1,
        eventsType = "custom",
        customEvents = "1762"
    ]),
    // 模拟浏览器请求头,避免被拦截
    Headers = [
        #"Content-Type" = "application/json",
        #"User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
    ],
    // 发送POST请求
    Response = Web.Contents("https://it.investing.com/economic-calendar/getCalendarFilteredData", [
        Headers = Headers,
        Content = RequestBody,
        ManualStatusHandling = {404, 403, 500}
    ]),
    // 解析返回的JSON数据
    JsonData = Json.Document(Response),
    DataArray = JsonData[data],
    // 转换为表格并处理日期列
    ResultTable = Table.TransformColumns(
        Table.FromRecords(DataArray),
        {
            ("event_date_utc", each DateTime.From(Number.From(_)/86400 + #datetime(1970,1,1,0,0,0))),
            ("event_date", each DateTime.From(Number.From(_)/86400 + #datetime(1970,1,1,0,0,0)))
        }
    ),
    // 按需保留需要的列(示例保留常用列)
    FinalTable = Table.SelectColumns(ResultTable, {"event_date", "currency", "event", "actual", "forecast", "previous"})
in
    FinalTable

3. 调整与注意事项

  • 时区参数:timeZone的值需根据页面显示的时区调整(可从浏览器抓包的请求体中获取准确值)
  • 请求拦截:如果返回403/500错误,更新User-Agent为当前浏览器的真实UA
  • API变更:Investing.com的API参数可能随时调整,若代码失效,重新抓包确认最新请求参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:37