大数跨境
0
0

从Yahoo爬取财经数据(期权和股票)

从Yahoo爬取财经数据(期权和股票) 跨境创客
2025-11-17
36

 

工作流概述

功能

获取 Yahoo Finance 的股票期权数据和实时行情

流程图


   
    
   [手动触发] 
    ↓
[配置股票代码] 
    ↓
[获取 Cookies] 
    ↓
[准备 Cookie Jar] 
    ↓
[获取 Crumb]
    ├──→ [获取期权数据] → [处理期权数据]
    └──→ [获取股票数据] → [处理股票数据]

详细搭建步骤

步骤1: 创建新工作流

  1. 1. 登录 n8n:https://a.qqx.ai
  2. 2. 点击 "+ New Workflow"
  3. 3. 命名为:Yahoo Finance Data Fetcher

节点1: Manual Trigger(手动触发器)

类型: Manual Trigger
名称:When clicking 'Execute workflow'
配置: 无需配置


节点2: Code - 配置股票代码

类型: Code
名称:Symbol Configuration
连接: 连接到 Manual Trigger

配置:

  • • Language: JavaScript

代码:


   
    
   return { 'symbol': '^SPX' }

说明:

  • • ^SPX - 标普500指数
  • • AAPL - 苹果股票
  • • TSLA - 特斯拉股票
  • • BTC-USD - 比特币

节点3: HTTP Request - 获取 Yahoo Cookies

类型: HTTP Request
名称:Get Yahoo Cookies
连接: 连接到 Symbol Configuration

配置:

  • • Method: GET
  • • URL:https://fc.yahoo.com
  • • Send Headers: ✅ 开启

Headers(添加 2 个):

Name
Value
User-Agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36
Accept
text/html,application/xhtml+xml

Options:

  • • 展开 Response 选项
  • • ✅ Full Response
  • • ✅ Never Error
  • • Response Format: Text

节点4: Code - 准备 Cookie Jar

类型: Code
名称:Prepare Cookie Jar
连接: 连接到 Get Yahoo Cookies

配置:

  • • Language: JavaScript

代码:


   
    
   var cookieJar = Array.isArray($input.first().json.headers['set-cookie'])
    ? $input.first().json.headers['set-cookie']
        .map(s => s.split(";")[0])
        .join("; ")
    : String($input.first().json.headers['set-cookie'] || "")
        .split(/\r?\n/).map(s => s.split(";")[0]).join("; ");

return
 {
  'ua'
: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36',
  'cookieJar'
: cookieJar  
}

说明: 提取并格式化从 Yahoo 返回的 Cookies


节点5: HTTP Request - 获取 Crumb

类型: HTTP Request
名称:Get Crumb
连接: 连接到 Prepare Cookie Jar

配置:

  • • Method: GET
  • • URL:https://query2.finance.yahoo.com/v1/test/getcrumb
  • • Send Headers: ✅ 开启

Headers(添加 3 个):

Name
Value
User-Agent
={{ $json.ua }}
Cookie
={{ $json.cookieJar }}
Accept
text/plain,*/*

Options:

  • • 展开 Response 选项
  • • ✅ Full Response
  • • Response Format: Text
  • • Output Property Name:body

说明: Crumb 是 Yahoo Finance API 的验证令牌


节点6: HTTP Request - 获取期权数据

类型: HTTP Request
名称:Fetch Options
连接: 连接到 Get Crumb

配置:

  • • Method: GET
  • • URL:=https://query2.finance.yahoo.com/v7/finance/options/{{ $('Symbol Configuration').item.json.symbol }}
  • • Send Query Parameters: ✅ 开启

Query Parameters(添加 1 个):

Name
Value
crumb
={{ $json.body }}

Send Headers: ✅ 开启

Headers(添加 4 个):

Name
Value
User-Agent
={{ $('Prepare Cookie Jar').item.json.ua }}
Cookie
={{ $('Prepare Cookie Jar').item.json.cookieJar }}
Accept
application/json
Referer
={{ "https://finance.yahoo.com/quote/" + ($('Symbol Configuration').item.json.symbol) + "/options" }}

Options:

  • • Response Format: JSON

节点7: HTTP Request - 获取股票数据

类型: HTTP Request
名称:Fetch Stock Data
连接: ⚠️ 也连接到 Get Crumb(创建分支)

配置:

  • • Method: GET
  • • URL:=https://query2.finance.yahoo.com/v8/finance/chart/{{ $('Symbol Configuration').item.json.symbol }}?interval=1m&range=1d
  • • Send Query Parameters: ✅ 开启

Query Parameters(添加 1 个):

Name
Value
crumb
={{ $json.body }}

Send Headers: ✅ 开启

Headers(添加 4 个):

Name
Value
User-Agent
={{ $('Prepare Cookie Jar').item.json.ua }}
Cookie
={{ $('Prepare Cookie Jar').item.json.cookieJar }}
Accept
application/json
Referer
={{ "https://finance.yahoo.com/quote/" + ($('Symbol Configuration').item.json.symbol) }}

Options:

  • • Response Format: JSON

说明:

  • • interval=1m - 1分钟K线
  • • range=1d - 获取1天的数据

节点8: Code - 处理期权数据

类型: Code
名称:Map Calls/Put Options
连接: 连接到 Fetch Options

配置:

  • • Language: JavaScript

代码:


   
    
   // Get Options data
var
 options = $input.first().json.optionChain.result[0].options[0];

// Merge puts & calls

var
 calls = options['calls'];
var
 puts = options['puts'];

return
 {'calls':calls, 'puts':puts}

说明: 提取看涨期权(calls)和看跌期权(puts)数据


节点9: Code - 处理股票数据

类型: Code
名称:Map Stock
连接: 连接到 Fetch Stock Data

配置:

  • • Language: JavaScript

代码:


   
    
   // Get Options data
var
 stock = $input.first().json.chart.result[0];
var
 timestamps = stock.timestamp;
var
 quote = stock.indicators.quote[0];

return
 timestamps.map((t, i) => ({
  time
:   t,
  open
:   quote.open[i],
  high
:   quote.high[i],
  low
:    quote.low[i],
  close
:  quote.close[i],
  volume
: quote.volume[i]
}));

说明: 将原始数据转换为标准的 OHLCV 格式






【声明】内容源于网络
0
0
跨境创客
专注跨境SEO变现, 手把手教你: · 如何玩转谷歌SEO · 如何打造爆款网站 · 如何快速接到海外订单 · 如何实现出海变现
内容 67
粉丝 0
跨境创客 专注跨境SEO变现, 手把手教你: · 如何玩转谷歌SEO · 如何打造爆款网站 · 如何快速接到海外订单 · 如何实现出海变现
总阅读1.7k
粉丝0
内容67