Как получить цены на фондовом рынке в Python. Надежный, который работает каждый раз

#python-3.x #dataframe #stock #yahoo-finance #pandas-datareader

Вопрос:

Я хочу импортировать данные о фондовом рынке в фрейм данных. Я попробовал web.DataReader и Yahoo Finance, и вот результаты. Я поискал в Интернете «Повторяемое» решение для получения биржевых данных из Интернета. Я пробовал решения yahoo finance и web.DataReader. Результаты этих исследований опубликованы ниже.

Я также пробовал Quandl, но в нем нет всех тикеров, которые я ищу….

 df_IJR = yf.download("IJR", start=start_data, end=end_data).reset_index()

df_IJR = yf.download("IJR", start=start_data, end=end_data).reset_index()
Exception in thread Thread-22:
Traceback (most recent call last):
  File "D:HPDocsMyProgramFilesAnaconda3libthreading.py", line 932, in _bootstrap_inner
    self.run()
  File "D:HPDocsMyProgramFilesAnaconda3libthreading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagesmultitasking__init__.py", line 102, in _run_via_pool
    return callee(*args, **kwargs)
  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagesyfinancemulti.py", line 167, in _download_one_threaded
    data = _download_one(ticker, start, end, auto_adjust, back_adjust,
  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagesyfinancemulti.py", line 179, in _download_one
    return Ticker(ticker).history(period=period, interval=interval,
  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagesyfinancebase.py", line 157, in history
    data = data.json()
  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagesrequestsmodels.py", line 900, in json
    return complexjson.loads(self.text, **kwargs)
  File "D:HPDocsMyProgramFilesAnaconda3libjson__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "D:HPDocsMyProgramFilesAnaconda3libjsondecoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "D:HPDocsMyProgramFilesAnaconda3libjsondecoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
 

С помощью web.DataReader вот результаты.

 df_google = web.DataReader("GOOGL", 'yahoo', start_data, end_data)['Close'].reset_index()
Traceback (most recent call last):

  File "<ipython-input-35-cd9c40cdca1d>", line 1, in <module>
    df_google = web.DataReader("GOOGL", 'yahoo', start_data, end_data)['Close'].reset_index()

  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagespandasutil_decorators.py", line 199, in wrapper
    return func(*args, **kwargs)

  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagespandas_datareaderdata.py", line 376, in DataReader
    return YahooDailyReader(

  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagespandas_datareaderbase.py", line 253, in read
    df = self._read_one_data(self.url, params=self._get_params(self.symbols))

  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagespandas_datareaderyahoodaily.py", line 153, in _read_one_data
    resp = self._get_response(url, params=params)

  File "D:HPDocsMyProgramFilesAnaconda3libsite-packagespandas_datareaderbase.py", line 181, in _get_response
    raise RemoteDataError(msg)

RemoteDataError: Unable to read URL: https://finance.yahoo.com/quote/GOOGL/history?period1=1577876400amp;period2=1625911199amp;interval=1damp;frequency=1damp;filter=history
Response Text:
b'<!DOCTYPE html>n  <html lang="en-us"><head>n  <meta http-equiv="content-type" content="text/html; charset=UTF-8">n      <meta charset="utf-8">n      <title>Yahoo</title>n      <meta name="viewport" content="width=device-width,initial-scale=1,minimal-ui">n      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">n      <style>n  html {n      height: 100%;n  }n  body {n      background: #fafafc url(https://s.yimg.com/nn/img/sad-panda-201402200631.png) 50% 50%;n      background-size: cover;n      height: 100%;n      text-align: center;n      font: 300 18px "helvetica neue", helvetica, verdana, tahoma, arial, sans-serif;n  }n  table {n      height: 100%;n      width: 100%;n      table-layout: fixed;n      border-collapse: collapse;n      border-spacing: 0;n      border: none;n  }n  h1 {n      font-size: 42px;n      font-weight: 400;n      color: #400090;n  }n  p {n      color: #1A1A1A;n  }n  #message-1 {n      font-weight: bold;n      margin: 0;n  }n  #message-2 {n      display: inline-block;n      *display: inline;n      zoom: 1;n      max-width: 17em;n      _width: 17em;n  }n      </style>n  <script>n    document.write('<img src="//geo.yahoo.com/b?s=1197757129amp;t=' new Date().getTime() 'amp;src=awsamp;err_url=' encodeURIComponent(document.URL) 'amp;err=%<pssc>amp;test=' encodeURIComponent('%<{Bucket}cqh[:200]>') '" width="0px" height="0px"/>');var beacon = new Image();beacon.src="//bcn.fp.yahoo.com/p?s=1197757129amp;t=" new Date().getTime() "amp;src=awsamp;err_url=" encodeURIComponent(document.URL) "amp;err=%<pssc>amp;test=" encodeURIComponent('%<{Bucket}cqh[:200]>');n  </script>n  </head>n  <body>n  <!-- status code : 404 -->n  <!-- Not Found on Server -->n  <table>n  <tbody><tr>n      <td>n      <img src="https://s.yimg.com/rz/p/yahoo_frontpage_en-US_s_f_p_205x58_frontpage.png" alt="Yahoo Logo">n      <h1 style="margin-top:20px;">Will be right back...</h1>n      <p id="message-1">Thank you for your patience.</p>n      <p id="message-2">Our engineers are working quickly to resolve the issue.</p>n      </td>n  </tr>n  </tbody></table>n  </body></html>'
 

Ответ №1:

Попробуйте это:

 import datetime as dt
import pandas as pd
import yfinance as yf
from pandas_datareader import data as pdr

tickers = ["AAPL","GOOG","AMZN"]
yf.download(tickers,  start = "2021-02-01" , end = "2021-02-04")
 

Я также рекомендую проверить financialmodelingprep, они очень надежны и имеют бесплатную версию.

Комментарии:

1. Это не сработало, я получаю ошибку: yf.загрузка(тикеры, начало = «2021-02-01» , конец = «2021-02-04») Исключение в потоке Исключение в потоке Поток-12: Обратная связь (последний последний вызов): Файл «D:HPDocsMyProgramFilesAnaconda3libthreading.py», строка 932, в потоке _bootstrap_inner-11: Обратная трассировка (последний последний вызов): Файл «D:HPDocsMyProgramFilesAnaconda3libthreading.py», строка 932, в исключении _bootstrap_inner в потоке Поток-10: Обратная трассировка (последний последний вызов):

2. Должен ли я снова попытаться установить Anaconda ?

3. Просто обновите с помощью: $ pip установите yfinance-обновление-без кэша-реж.