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

Node.js调用Google获取美元兑欧元汇率特殊卡片数据问题

How to Scrape Google's Currency Exchange Rate Card with Node.js

Hey there! I’ve dealt with exactly this problem before—trying to pull that handy exchange rate card from Google instead of relying on third-party APIs. The node-google library you’re using is great for regular search results, but it doesn’t tap into the structured special cards Google serves up. Let me walk you through a couple of reliable ways to get that data.

Why node-google Isn’t Working

First, quick context: Google separates regular search results from those special cards (like currency converters, weather, or stock prices). The node-google library likely only fetches the standard search result API endpoint, which doesn’t include the structured data from those cards. To get that info, you need to either parse the actual page DOM or use a tool that can handle dynamic content.

Solution 1: Use Puppeteer (Headless Browser)

Puppeteer lets you simulate a real browser, which means it can load and render the full Google search page—including the exchange rate card. Here’s a simple implementation:

  1. First, install Puppeteer:
npm install puppeteer
  1. Then write the script to scrape the rate:
const puppeteer = require('puppeteer');

async function fetchDollarToEuroRate() {
  // Launch a headless browser
  const browser = await puppeteer.launch({ headless: 'new' });
  const page = await browser.newPage();

  // Navigate to the Google search page
  await page.goto('https://www.google.com/search?q=dollar+to+euro', { waitUntil: 'networkidle2' });

  try {
    // Wait for the exchange rate element to load (Google's selector might change—verify this!)
    const rateSelector = 'span.DFlfde.SwHCTb';
    await page.waitForSelector(rateSelector, { timeout: 5000 });

    // Extract the rate text
    const exchangeRate = await page.evaluate(selector => {
      return document.querySelector(selector).textContent;
    }, rateSelector);

    console.log(`Current exchange rate: 1 USD = ${exchangeRate} EUR`);
  } catch (error) {
    console.error('Failed to fetch the exchange rate:', error.message);
  } finally {
    // Close the browser
    await browser.close();
  }
}

// Run the function
fetchDollarToEuroRate();

Notes for Puppeteer:

  • Google updates its DOM structure occasionally, so if the selector stops working, right-click the rate on Google and use "Inspect" to find the new selector.
  • Add delays or use waitUntil options to avoid triggering Google’s anti-scraping measures. Don’t spam requests too quickly!

Solution 2: Axios + Cheerio (For Static Content)

If you prefer not to use a headless browser, you can try fetching the page HTML with Axios and parsing it with Cheerio. Warning: This might not work if Google serves dynamic content for the rate card, but it’s worth a shot:

  1. Install dependencies:
npm install axios cheerio
  1. The script:
const axios = require('axios');
const cheerio = require('cheerio');

async function scrapeRateWithCheerio() {
  try {
    const response = await axios.get('https://www.google.com/search?q=dollar+to+euro', {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
      }
    });

    const $ = cheerio.load(response.data);
    // Again, verify the selector here
    const rate = $('span.DFlfde.SwHCTb').text();

    if (rate) {
      console.log(`1 USD = ${rate} EUR`);
    } else {
      console.log('Could not find the exchange rate—Google might have updated its structure.');
    }
  } catch (error) {
    console.error('Error fetching page:', error.message);
  }
}

scrapeRateWithCheerio();

Caveats for This Approach:

  • Google might block requests without a proper User-Agent header, so make sure to include one that mimics a real browser.
  • Dynamic content won’t be parsed by Cheerio, so if the rate loads after page load (via JavaScript), this method will fail. Puppeteer is more reliable in that case.

Final Tips

  • Always respect Google’s terms of service when scraping. Don’t overload their servers with frequent requests.
  • If you need a more stable solution long-term, consider using a dedicated currency API instead of scraping—they’re designed for this use case and avoid the hassle of dealing with changing DOM structures.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:24:44