2017-11-01 7 views
27

Yahooは突然本日、財務ダウンロードAPIを終了しましたか?私はperlのから、このようなURLを使用してきたヶ月間

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

今日、11/1/17、それは突然999エラーを返します。

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

私は例えば、などのブラウザに直接URLを入力してもエラーが表示されます。

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

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

注:これは過去に回答された質問ではありません。 それは昨日働いていた。それは月の初めに起こったことは疑わしい。

+4

これはYahooのサイトの状態ではないので、私は、オフトピックとして、この質問を閉じるために投票しています。私たちはサードパーティのオフサイトの場所やベンダーをサポートしていません。そのサイトに直接連絡して、そのステータスについて問い合わせる。このサイトはプログラミング関連の質問です。 – Rob

+3

私も同じ問題に直面しています。それは昨日すべて良かったです。誰でも正常なAPIコードを持っていますか? – Dennis

+4

多くの人がこの問題を抱えていますが、あなたのサイトは純粋なままです。 – user1067305

答えて

16

彼らはサービス終了ヤフーconfirmed:他の回答では、他の場所で述べたように

It has come to our attention that this service is being used in violation of the Yahoo Terms of Service. As such, the service is being discontinued. For all future markets and equities data research, please refer to finance.yahoo.com .

+0

私はYahooの応答を得ていない。 –

+0

これはYahooとよく似ていますが*気にしません。 –

+1

@AlenSiljakああ、彼らは大丈夫です。それはおそらくこれが本当に何であるか、彼らはそれを再び提供することになるだろうが、人々/ビジネス/コーダーはそれを支払う必要があります。 –

13

を(例えばcurrency helper of yahoo - Sorry, Unable to process request at this time -- error 999)、ヤフーは確かにヤフー・ファイナンスのAPIの動作を停止しました。ただし、回避策として、https://finance.yahoo.com/quote/SYMBOL(例:https://finance.yahoo.com/quote/MSFT)へのHTTPS GETリクエストを行うことで、特定のティッカーシンボルのJSON形式の金融情報にアクセスできます。上記のURLにGETリクエストを行うと、財務データがJSON形式のレスポンスに含まれていることがわかります。

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 
3

を取得する方法がまだある次のPythonスクリプトは、あなたがに興味がある可能性があり、個々の値を解析する方法を示していますこのデータは、finance.yahoo.comページで使用されるいくつかのAPIを照会することによって得られます。以前のAPIが(うまくいけば)そうだったので、Yahooが長期的にそれをサポートするかどうかは分かりません。

#!/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 

は、私は、コマンドラインからのシンボルのリストを受け取り、CSVなどの変数のいくつかを出力し、次のPythonハックへ https://github.com/pstadler/ticker.shで使用される方法を適応しました
5

var API = "https://query1.finance.yahoo.com/v7/finance/quote?symbols=AAPL"; $.getJSON(API, function (json) {...});呼び出しはこのエラーをスローします:No 'Access-Control-Allow-Origin'ヘッダーが要求されたリソースに存在します。 Origin 'http://www.microplan.at'はアクセスできません。

+0

これはブラウザからうまく動作し、jsonを返すようです。 – MickG

+0

このサービスも中止することがあります –

0

Yahoo Financeを使用している私のPythonプログラムは、最近正常に動作しなくなりましたが、そのエラーは返されず、単に株価が0に置き換えられました。私は最初にデバッグしたときにこれを見た後、その株のヤフーファイナンスURLに行ったときにエラーを確認しました。実際のデータは壊れているので、提案された回避策は私の問題を解決するとは思わない。これはヤフーのAPIを中止することに関連している可能性がありますか?私はこれを説明できるものを理解できません。

例:

関連する問題