#python #pandas
#python #pandas
Вопрос:
Все еще пытаюсь изучить Python. В качестве учебного упражнения я попытался написать скрипт для извлечения исторических данных биткойнов за последние 5 лет из coinmarketcap.com . У меня это так, что никаких ошибок не генерируется, но в конце не создается CSV-файл. Я читал в другом месте, что он может сохраняться в другом каталоге, но я вижу, что рабочий каталог находится там, где я ищу, и я использовал df.to_csv в другом скрипте в этом каталоге, и он сохранен правильно.
Я использую Spyder через ноутбуки Anaconda. Вот мой скрипт:
from bs4 import BeautifulSoup
import requests
import pandas as pd
import json
coins = {}
for i in coins:
page = requests.get('https://coinmarketcap.com/currencies/bitcoin/historical-data/?start=20150920amp;end=20200918')
soup = BeautifulSoup(page.content, 'html.parser')
data = soup.find('script', id="__NEXT_DATA__",type="application/json")
historical_data = json.loads(data.contents[0])
quotes = historical_data['props']['initialState']['cryptocurrency']['ohlcvHistorical']['i']['quotes']
market_cap = []
volume = []
timestamp = []
name = []
symbol = []
slug = []
df = pd.DataFrame(columns = ['marketcap','volume','timestamp','name','symbol','slug'])
for j in quotes:
market_cap.append(j['quote']['USD']['market_cap'])
volume.append(j['quote']['USD']['volume'])
timestamp.append(j['quote']['USD']['timestamp'])
name.append(info['name'])
symbol.append(info['symbol'])
slug.append(coins[i])
df['marketcap'] = market_cap
df['volume'] = volume
df['timestamp'] = timestamp
df['name'] = name
df['symbol'] = symbol
df['slug'] = slug
df.to_csv('C:\Python34\Projects\Trends\btcvalue.csv', index=False)
Комментарии:
1.
coins
пусто, поэтому цикл будет иметь 0 (нулевых) итераций, и код в нем никогда не будет выполнен.
Ответ №1:
Ваш первый цикл for никогда не будет выполняться, потому coins
что всегда пуст. И я бы предложил df.to_csv
выйти из цикла for .
[...]
coins = {}
for i in coins:
[...]
df['slug'] = slug
df.to_csv('C:\Python34\Projects\Trends\btcvalue.csv', index=False)