Yahoo Financeをスクレイピングする方法:株価データの抽出

Yahoo Financeのスクレイピングをマスターしましょう。AkamaiやDataDomeのブロックを回避しながら、リアルタイム価格、過去データ、金融ニュースを抽出する方法を解説します。

Yahoo Finance favicon
yahoo.com難しい
カバー率:GlobalUnited StatesUnited KingdomCanadaGermanyFranceJapan
利用可能なデータ8 フィールド
タイトル価格説明画像出品者情報投稿日カテゴリ属性
すべての抽出可能フィールド
ティッカーシンボル通常市場価格価格変化率時価総額PER (直近12ヶ月)配当利回り決算発表日平均出来高52週高値/安値アナリストのコンセンサス格付け収益成長率自己資本負債比率営業キャッシュフローニュース見出し記事公開タイムスタンプ
技術要件
JavaScript必須
ログイン不要
ページネーションあり
公式APIなし
ボット対策検出
Akamai Bot ManagerDataDomeRate LimitingTLS FingerprintingCookie Validation

ボット対策検出

Akamai Bot Manager
デバイスフィンガープリント、行動分析、機械学習による高度なボット検出。最も洗練されたアンチボットシステムの一つ。
DataDome
MLモデルによるリアルタイムボット検出。デバイスフィンガープリント、ネットワーク信号、行動パターンを分析。ECサイトで一般的。
レート制限
時間あたりのIP/セッションごとのリクエストを制限。ローテーションプロキシ、リクエスト遅延、分散スクレイピングで回避可能。
ブラウザフィンガープリント
ブラウザの特性でボットを識別:canvas、WebGL、フォント、プラグイン。スプーフィングまたは実際のブラウザプロファイルが必要。
Cookie Validation

Yahoo Financeについて

Yahoo Financeが提供するものと抽出可能な貴重なデータを発見してください。

Yahoo Financeは、世界をリードする金融ニュースおよびデータプラットフォームであり、グローバル市場を追跡するための包括的なエコシステムを提供しています。リアルタイムの株価、上場投資信託(ETF)、通貨、コモディティの主要な情報源として機能しています。このプラットフォームは、市場動向の監視や主要なグローバル取引所の企業情報の閲覧のために、個人投資家から金融のプロフェッショナルまで幅広く利用されています。

サイトには、高頻度の価格更新から、バランスシートやキャッシュフロー計算書を含む詳細な財務諸表まで、豊富な構造化データが含まれています。Yahoo Financeをスクレイピングすることで、ユーザーは自動取引シグナルの構築、市場ニュースのセンチメント分析、また本来であればBloomberg Terminalのような高価な法人向けサブスクリプションを必要とする過去のパフォーマンスデータの集計が可能になります。

Yahoo Financeについて

なぜYahoo Financeをスクレイピングするのか?

Yahoo Financeからのデータ抽出のビジネス価値とユースケースを発見してください。

市場分析:何百ものティッカーを同時に集計してセクターのパフォーマンスを追跡します。

アルゴリズムトレード:リアルタイムの価格と出来高データをカスタム取引modelに供給します。

センチメント追跡:見出しをスクレイピングし、NLPモデルを使用して市場のムードを測定します。

財務モデリング:ファンダメンタル分析のためにバランスシートや損益計算書を抽出します。

ポートフォリオ管理:手動入力なしで個人またはクライアントの資産価値を自動的に更新します。

過去データ調査:投資戦略のバックテストのために、数年分の価格履歴をダウンロードします。

スクレイピングの課題

Yahoo Financeのスクレイピング時に遭遇する可能性のある技術的課題。

強力なアンチボット:Akamaiが自動リクエストに対して頻繁に403 Forbiddenエラーをトリガーします。

動的なクラス名:Yahooはスクレイパーを阻止するために、CSSクラスを頻繁にランダム化または難読化します。

重いJS依存性:重要なデータはReact経由で注入されることが多く、ブラウザ環境が必要になります。

データレート制限:同一エンドポイントへの高頻度なリクエストは、一時的なIP禁止を招きます。

Yahoo FinanceをAIでスクレイピング

コーディング不要。AI搭載の自動化で数分でデータを抽出。

仕組み

1

必要なものを記述

Yahoo Financeから抽出したいデータをAIに伝えてください。自然言語で入力するだけ — コードやセレクターは不要です。

2

AIがデータを抽出

人工知能がYahoo Financeをナビゲートし、動的コンテンツを処理し、あなたが求めたものを正確に抽出します。

3

データを取得

CSV、JSONでエクスポートしたり、アプリやワークフローに直接送信できる、クリーンで構造化されたデータを受け取ります。

なぜスクレイピングにAIを使うのか

Fingerprint Spoofing:Akamaiをバイパスするために、TLSやブラウザのフィンガープリントを自動的に管理します。
ノーコード選択:壊れやすいCSSセレクターを書くことなく、価格やニュース要素を視覚的に選択できます。
クラウドローテーション:ローカルIPのブラックリスト登録を避けるため、分散型クラウドインフラストラクチャを使用します。
スケジュール監視:市場が開いている時間帯に、手動の操作なしで1分ごとにスクレイパーを実行します。
クレジットカード不要無料プランありセットアップ不要

AIを使えば、コードを書かずにYahoo Financeを簡単にスクレイピングできます。人工知能搭載のプラットフォームが必要なデータを理解します — 自然言語で記述するだけで、AIが自動的に抽出します。

How to scrape with AI:
  1. 必要なものを記述: Yahoo Financeから抽出したいデータをAIに伝えてください。自然言語で入力するだけ — コードやセレクターは不要です。
  2. AIがデータを抽出: 人工知能がYahoo Financeをナビゲートし、動的コンテンツを処理し、あなたが求めたものを正確に抽出します。
  3. データを取得: CSV、JSONでエクスポートしたり、アプリやワークフローに直接送信できる、クリーンで構造化されたデータを受け取ります。
Why use AI for scraping:
  • Fingerprint Spoofing:Akamaiをバイパスするために、TLSやブラウザのフィンガープリントを自動的に管理します。
  • ノーコード選択:壊れやすいCSSセレクターを書くことなく、価格やニュース要素を視覚的に選択できます。
  • クラウドローテーション:ローカルIPのブラックリスト登録を避けるため、分散型クラウドインフラストラクチャを使用します。
  • スケジュール監視:市場が開いている時間帯に、手動の操作なしで1分ごとにスクレイパーを実行します。

Yahoo Finance用ノーコードWebスクレイパー

AI搭載スクレイピングのポイント&クリック代替手段

Browse.ai、Octoparse、Axiom、ParseHubなどのノーコードツールは、コードを書かずにYahoo Financeをスクレイピングするのに役立ちます。これらのツールは視覚的なインターフェースを使用してデータを選択しますが、複雑な動的コンテンツやアンチボット対策には苦戦する場合があります。

ノーコードツールでの一般的なワークフロー

1
ブラウザ拡張機能をインストールするかプラットフォームに登録する
2
ターゲットWebサイトに移動してツールを開く
3
ポイント&クリックで抽出するデータ要素を選択する
4
各データフィールドのCSSセレクタを設定する
5
複数ページをスクレイピングするためのページネーションルールを設定する
6
CAPTCHAに対処する(多くの場合手動解決が必要)
7
自動実行のスケジュールを設定する
8
データをCSV、JSONにエクスポートするかAPIで接続する

一般的な課題

学習曲線

セレクタと抽出ロジックの理解に時間がかかる

セレクタの破損

Webサイトの変更によりワークフロー全体が壊れる可能性がある

動的コンテンツの問題

JavaScript多用サイトは複雑な回避策が必要

CAPTCHAの制限

ほとんどのツールはCAPTCHAに手動介入が必要

IPブロック

過度なスクレイピングはIPのブロックにつながる可能性がある

Yahoo Finance用ノーコードWebスクレイパー

Browse.ai、Octoparse、Axiom、ParseHubなどのノーコードツールは、コードを書かずにYahoo Financeをスクレイピングするのに役立ちます。これらのツールは視覚的なインターフェースを使用してデータを選択しますが、複雑な動的コンテンツやアンチボット対策には苦戦する場合があります。

ノーコードツールでの一般的なワークフロー
  1. ブラウザ拡張機能をインストールするかプラットフォームに登録する
  2. ターゲットWebサイトに移動してツールを開く
  3. ポイント&クリックで抽出するデータ要素を選択する
  4. 各データフィールドのCSSセレクタを設定する
  5. 複数ページをスクレイピングするためのページネーションルールを設定する
  6. CAPTCHAに対処する(多くの場合手動解決が必要)
  7. 自動実行のスケジュールを設定する
  8. データをCSV、JSONにエクスポートするかAPIで接続する
一般的な課題
  • 学習曲線: セレクタと抽出ロジックの理解に時間がかかる
  • セレクタの破損: Webサイトの変更によりワークフロー全体が壊れる可能性がある
  • 動的コンテンツの問題: JavaScript多用サイトは複雑な回避策が必要
  • CAPTCHAの制限: ほとんどのツールはCAPTCHAに手動介入が必要
  • IPブロック: 過度なスクレイピングはIPのブロックにつながる可能性がある

コード例

import requests
from bs4 import BeautifulSoup

# 即時のAkamaiブロックを避けるため、本物のブラウザを模倣します
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Accept-Language': 'ja-JP,ja;q=0.9'
}

def scrape_yahoo_stock(ticker):
    url = f'https://finance.yahoo.com/quote/{ticker}'
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        # Yahooが使用するカスタムのfin-streamerタグをターゲットにします
        price = soup.find('fin-streamer', {'data-field': 'regularMarketPrice'}).text
        print(f'Ticker: {ticker} | Price: {price}')
    else:
        print(f'データの取得に失敗しました。ステータスコード: {response.status_code}')

scrape_yahoo_stock('AAPL')

いつ使うか

JavaScriptが最小限の静的HTMLページに最適。ブログ、ニュースサイト、シンプルなEコマース製品ページに理想的。

メリット

  • 最速の実行(ブラウザオーバーヘッドなし)
  • 最小限のリソース消費
  • asyncioで簡単に並列化
  • APIと静的ページに最適

制限事項

  • JavaScriptを実行できない
  • SPAや動的コンテンツで失敗
  • 複雑なアンチボットシステムで苦戦する可能性

コードでYahoo Financeをスクレイピングする方法

Python + Requests
import requests
from bs4 import BeautifulSoup

# 即時のAkamaiブロックを避けるため、本物のブラウザを模倣します
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Accept-Language': 'ja-JP,ja;q=0.9'
}

def scrape_yahoo_stock(ticker):
    url = f'https://finance.yahoo.com/quote/{ticker}'
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        # Yahooが使用するカスタムのfin-streamerタグをターゲットにします
        price = soup.find('fin-streamer', {'data-field': 'regularMarketPrice'}).text
        print(f'Ticker: {ticker} | Price: {price}')
    else:
        print(f'データの取得に失敗しました。ステータスコード: {response.status_code}')

scrape_yahoo_stock('AAPL')
Python + Playwright
from playwright.sync_api import sync_playwright

def run():
    with sync_playwright() as p:
        # 本物のブラウザプロファイルで起動することで、基本的な検知を回避できます
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto('https://finance.yahoo.com/quote/TSLA')
        
        # JSによって価格要素が更新されるのを待ちます
        page.wait_for_selector('fin-streamer[data-field="regularMarketPrice"]')
        
        price = page.inner_text('fin-streamer[data-field="regularMarketPrice"]')
        name = page.inner_text('h1')
        
        print(f'{name}: {price}')
        browser.close()

run()
Python + Scrapy
import scrapy

class YahooFinanceSpider(scrapy.Spider):
    name = 'yahoo_finance'
    start_urls = ['https://finance.yahoo.com/quote/NVDA']

    def parse(self, response):
        yield {
            'ticker': 'NVDA',
            'current_price': response.css('fin-streamer[data-field="regularMarketPrice"]::attr(value)').get(),
            'market_cap': response.xpath('//td[@data-test="MARKET_CAP-value"]/text()').get(),
            'pe_ratio': response.xpath('//td[@data-test="PE_RATIO-value"]/text()').get()
        }
Node.js + Puppeteer
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  // Puppeteerでは、現実的なUser-Agentの設定が極めて重要です
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
  
  await page.goto('https://finance.yahoo.com/quote/MSFT');
  
  const data = await page.evaluate(() => {
    return {
      price: document.querySelector('fin-streamer[data-field="regularMarketPrice"]').innerText,
      prevClose: document.querySelector('td[data-test="PREV_CLOSE-value"]').innerText
    };
  });

  console.log(data);
  await browser.close();
})();

Yahoo Financeデータで何ができるか

Yahoo Financeデータからの実用的なアプリケーションとインサイトを探索してください。

アルゴリズムトレードのシグナル

クオンツトレーダーは、スクレイピングした価格と出来高のデータを使用して、テクニカル指標に基づいて取引を実行する自動化システムに供給します。

実装方法:

  1. 150以上の銘柄のウォッチリストについてリアルタイム価格をスクレイピングする。
  2. 2データから移動平均線やRSI値を算出する。
  3. 3しきい値に達したときに取引所APIへのウェブフックをトリガーする。
  4. 4戦略改善のためにパフォーマンスデータを記録する。

Automatioを使用してYahoo Financeからデータを抽出し、コードを書かずにこれらのアプリケーションを構築しましょう。

Yahoo Financeデータで何ができるか

  • アルゴリズムトレードのシグナル

    クオンツトレーダーは、スクレイピングした価格と出来高のデータを使用して、テクニカル指標に基づいて取引を実行する自動化システムに供給します。

    1. 50以上の銘柄のウォッチリストについてリアルタイム価格をスクレイピングする。
    2. データから移動平均線やRSI値を算出する。
    3. しきい値に達したときに取引所APIへのウェブフックをトリガーする。
    4. 戦略改善のためにパフォーマンスデータを記録する。
  • セクターセンチメントダッシュボード

    投資家は特定の業界のニュース見出しを集計して、そのセクターが現在「強気」か「弱気」かを判断できます。

    1. 特定のティッカーについてYahoo Financeのニュースセクションから見出しを抽出する。
    2. テキストをAIセンチメント分析model(GPTやVADERなど)に渡す。
    3. カスタムダッシュボードで「恐怖強欲指数」を可視化する。
    4. 日次の要約レポートをメールで送信する。
  • ポートフォリオの自動リバランス

    ファイナンシャルアドバイザーは、スクレイピングしたデータを使用して、クライアントのポートフォリオが目標とする資産配分比率内に維持されるようにします。

    1. CSVやデータベースから現在の保有資産をインポートする。
    2. 保有するすべての資産の現在の市場価格をスクレイピングする。
    3. 目標から5%以上乖離した資産を特定する。
    4. ポートフォリオをバランスの取れた状態に戻すための「売買リスト」を生成する。
  • 競合のファンダメンタル分析

    企業アナリストは、業界全体のPERや負債資本比率を比較して、過小評価されている企業を見つけ出します。

    1. 特定のセクター(例:テック企業)の全企業の「Financials」タブをスクレイピングする。
    2. データポイントを単一のスプレッドシートに正規化する。
    3. 高成長だが低評価の割安銘柄を特定する。
    4. 調査結果をPowerPointやPDFレポートに出力する。
プロンプト以上のもの

ワークフローを強化する AI自動化

AutomatioはAIエージェント、ウェブ自動化、スマート統合のパワーを組み合わせ、より短時間でより多くのことを達成するお手伝いをします。

AIエージェント
ウェブ自動化
スマートワークフロー

Yahoo Financeスクレイピングのプロのヒント

Yahoo Financeからデータを正常に抽出するための専門家のアドバイス。

ページソース内でwindow.App.mainを含むscriptタグを確認してください。ここにはページデータの全容を含むJSONデータが含まれていることがよくあります。

データセンタープロキシではなくレジデンシャルプロキシを使用してください。YahooのCDN(Akamai)はサーバー側のIP範囲を容易に識別します。

過去のデータを取得するには、HTMLテーブルをスクレイピングするのではなく、動的なCSVダウンロードURLのパターンを特定してください。

トラフィックをオーガニックに見せるため、常にGoogleなどの検索エンジンを指す'Referer'ヘッダーを設定してください。

ネットワークタブで'query1.finance.yahoo.com'へのリクエストを監視してください。これらはHTMLの不要なデータを含まないクリーンなJSONデータを返します。

振る舞い分析による検知を回避するため、リクエスト速度を1つのIPにつき2〜5秒に1回までに制限してください。

関連 Web Scraping

Yahoo Financeについてのよくある質問

Yahoo Financeに関するよくある質問への回答を見つけてください