Импорт данных из CoinMarketCap - PullRequest
0 голосов
/ 25 января 2019

Я слежу за учебником Youtube, который импортирует данные из Yahoo для S & P500, и вместо этого я пытаюсь импортировать данные из coinmarketcap для отслеживания данных криптовалюты.

Я пытаюсь использовать Pandas DataReader для получения данных из coinmarketcap, но получаю ошибку (NotImplementedError: data_source = 'coinmarketcap' не реализовано).

Я не уверен, что мой синтаксис неправильный, или я пропускаю модуль, или я использую неправильную реализацию data_source.

Вот код:

import coinmarketcap

import bs4 as bs
import datetime as dt
import os
import pandas_datareader as web
import pickle
import requests

def save_cmc_tickers():
    resp = requests.get('https://coinmarketcap.com')
    soup = bs.BeautifulSoup(resp.text, "lxml")
    table = soup.find('table', {'class': 'table floating-header'})
    #table1 = soup.find('table', {'class': 'no-wrap text-right'})
    tickers = []
    for row in table.findAll('tr')[1:]:
        ticker = row.findAll('a')[0].text
        price = row.findAll('a', {'class': 'price'})[0].text
        tickers.append(ticker)
        tickers.append(price)

    with open("cmctickers.pickle", "wb") as f:
        pickle.dump(tickers, f)

    print(tickers)

    return tickers

    #save_cmc_tickers()

    def get_data_from_cmc(reload_cmc100=False):

    if reload_cmc100:
        tickers = save_cmc_tickers()
    else:
        with open("cmctickers.pickle", "rb") as f:
            tickers = pickle.load(f)

    if not os.path.exists('stock_dfs'):
        os.makedirs('stock_dfs')

    start = dt.datetime(2010, 1, 1)
    end = dt.datetime(2017, 12, 31)

    for ticker in tickers:
        print(ticker)
        if not os.path.exists('stock_dfs/{}.csv'.format(ticker)):
            df = web.DataReader(ticker, 'coinmarketcap', start, end)
            df.to_csv('stock_dfs/{}.csv'.format(ticker))
        else:
            print("Already have {}".format(ticker))

get_data_from_cmc()

Ранее я также получал ошибку "EOFError: Out of input", поэтому я не знаю, имеет ли это какое-либо отношение к этому, но это больше не появляется.

Любая информация очень помогла бы. Спасибо.

1 Ответ

0 голосов
/ 29 января 2019

pandas_datareader не обеспечивает поддержку CoinMarketCap. Вот почему NotImplementedError был поднят.

Отдельное примечание: может не быть необходимости очищать CoinMarketCap для данных, которые вы ищете, поскольку CoinMarketCap имеет API разработчика ( ссылка ), к которому можно получить доступ следующим образом (после получения получения Ключ API ), хотя в бесплатном плане предусмотрены только определенные конечные точки.

# python 3
import requests

url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/ohlcv/historical"

params = {
    "time_start": "2017-01-01",
    "time_end": "2018-01-01",
    "interval": "1d"
}

headers = {
    "X-CMC_PRO_API_KEY": "<YOUR_API_KEY>"   
}

r = requests.get(url, params=params, headers=headers)
r.json()
...