web-dev-qa-db-ja.com

Yahooは本日、金融ダウンロードAPIを突然終了しましたか?

何ヶ月もの間、PerlのこのようなURLを使用してきました。

http://finance.yahoo.com/d/quotes.csv?s=$s&f=ynl1 #returns yield, name, price;

今日、17年11月1日、突然999エラーが返されます。

これは不具合ですか、それともYahooはサービスを終了しましたか?

次のようにURLをブラウザに直接入力してもエラーが発生します。

http://finance.yahoo.com/d/quotes.csv?s=INTC&f=ynl1

そのため、「クラム」問題ではないようです。

注:これは過去に回答された質問ではありません!昨日は機能していましたが、月の最初に起こったことは疑わしいです。

33
user1067305

他の回答や他の場所で説明されているように(例: yahooの通貨ヘルパー-申し訳ありませんが、現時点ではリクエストを処理できません-エラー999 )、YahooはYahoo Finance APIの運用を実際に停止しました。ただし、回避策として、HTTPS GETリクエストを実行して、特定のティッカーシンボルのJSON形式の財務情報の大部分にアクセスできます。 https://finance.yahoo.com/quote/SYMBOL (例 https://finance.yahoo.com/quote/MSFT )。上記のURLに対してGETリクエストを行うと、財務データがJSON形式の応答に含まれていることがわかります。次のpythonスクリプトは、興味のある個々の値を解析する方法を示しています。

import requests
import json

symbol='MSFT'
url='https://finance.yahoo.com/quote/' + symbol
resp = requests.get(url)

#parse the section from the html document containing the raw json data that we need
#you can write jsonstr to a file, then open the file in a web browser to browse the structure of the json data
r=resp.text.encode('utf-8')
i1=0
i1=r.find('root.App.main', i1)
i1=r.find('{', i1)
i2=r.find("\n", i1)
i2=r.rfind(';', i1, i2)
jsonstr=r[i1:i2]      


#load the raw json data into a python data object
data = json.loads(jsonstr)

#pull the values that we are interested in 
name=data['context']['dispatcher']['stores']['QuoteSummaryStore']['price']['shortName']
price=data['context']['dispatcher']['stores']['QuoteSummaryStore']['price']['regularMarketPrice']['raw']
change=data['context']['dispatcher']['stores']['QuoteSummaryStore']['price']['regularMarketChange']['raw']
shares_outstanding=data['context']['dispatcher']['stores']['QuoteSummaryStore']['defaultKeyStatistics']['sharesOutstanding']['raw']
market_cap=data['context']['dispatcher']['stores']['QuoteSummaryStore']['summaryDetail']['marketCap']['raw']
trailing_pe=data['context']['dispatcher']['stores']['QuoteSummaryStore']['summaryDetail']['trailingPE']['raw']
earnings_per_share=data['context']['dispatcher']['stores']['QuoteSummaryStore']['defaultKeyStatistics']['trailingEps']['raw']
forward_annual_dividend_rate=data['context']['dispatcher']['stores']['QuoteSummaryStore']['summaryDetail']['dividendRate']['raw']
forward_annual_dividend_yield=data['context']['dispatcher']['stores']['QuoteSummaryStore']['summaryDetail']['dividendYield']['raw']

#print the values
print 'Symbol:', symbol
print 'Name:', name
print 'Price:', price
print 'Change:', change
print 'Shares Outstanding:', shares_outstanding
print 'Market Cap:', market_cap
print 'Trailing PE:', trailing_pe
print 'Earnings Per Share:', earnings_per_share
print 'Forward Annual Dividend Rate:', forward_annual_dividend_rate
print 'Forward_annual_dividend_yield:', forward_annual_dividend_yield

スクリプトの出力は次のようになります。

Symbol: MSFT
Name: Microsoft Corporation
Price: 84.14
Change: 0.08999634
Shares Outstanding: 7714590208
Market Cap: 649105637376
Trailing PE: 31.04797
Earnings Per Share: 2.71
Forward Annual Dividend Rate: 1.68
Forward_annual_dividend_yield: 0.02
17
mti2935

Yahoo 確認済み サービスを終了したこと:

このサービスがYahooの利用規約に違反して使用されていることがわかりました。そのため、サービスは中止されています。今後のすべての市場および株式データの調査については、finance.yahoo.comを参照してください。

17
aleg

var API = "https://query1.finance.yahoo.com/v7/finance/quote?symbols=AAPL"; $.getJSON(API, function (json) {...});callは次のエラーをスローします:要求されたリソースに 'Access-Control-Allow-Origin'ヘッダーがありません。したがって、オリジン ' http://www.microplan.at/sar 'はアクセスを許可されていません。

6

Finance.yahoo.comページで使用されるいくつかのAPIを照会することにより、このデータを取得する方法がまだあります。 Yahooが以前のAPIのように長期的にサポートするかどうかはわかりません(うまくいけばサポートします)。

https://github.com/pstadler/ticker.sh で使用される方法を、コマンドラインからシンボルのリストを取得して出力する次のpythonハックに適合させました。 csvとしての変数:

#!/usr/bin/env python

import sys
import time
import requests

if len(sys.argv) < 2:
    print("missing parameters: <symbol> ...")
    exit()

apiEndpoint = "https://query1.finance.yahoo.com/v7/finance/quote"
fields = [
    'symbol',
    'regularMarketVolume',
    'regularMarketPrice',
    'regularMarketDayHigh',
    'regularMarketDayLow',
    'regularMarketTime',
    'regularMarketChangePercent']
fields = ','.join(fields)
symbols = sys.argv[1:]
symbols = ','.join(symbols)
payload = {
    'lang': 'en-US',
    'region': 'US',
    'corsDomain': 'finance.yahoo.com',
    'fields': fields,
    'symbols': symbols}
r = requests.get(apiEndpoint, params=payload)
for i in r.json()['quoteResponse']['result']:
    if 'regularMarketPrice' in i:
        a = []
        a.append(i['symbol'])
        a.append(i['regularMarketPrice'])
        a.append(time.strftime(
            '%Y-%m-%d %H:%M:%S', time.localtime(i['regularMarketTime'])))
        a.append(i['regularMarketChangePercent'])
        a.append(i['regularMarketVolume'])
        a.append("{0:.2f} - {1:.2f}".format(
            i['regularMarketDayLow'], i['regularMarketDayHigh']))
        print(",".join([str(e) for e in a]))

サンプル実行:

$ ./getquotePy.py AAPL GOOGL
AAPL,174.5342,2017-11-07 17:21:28,0.1630961,19905458,173.60 - 173.60
GOOGL,1048.6753,2017-11-07 17:21:22,0.5749836,840447,1043.00 - 1043.00
6
AlejandroVD

Yahoo Financeを使用している私のPythonプログラムは最近正常に動作しなくなりましたが、エラーを返さず、株価を0に置き換えました。デバッグ時に最初にこれを確認し、それらの株式のyahoo金融URLにアクセスしたときに、エラーを確認しました。実際のデータが台無しになっているため、提案されている回避策で問題が解決するとは思わない。これは、yahooがAPIを中止することに関連している可能性がありますか?何がこれを説明できるのか理解できません。

例:

0
partyphysics