Зацикливание и очистка финансовых тикеров - PullRequest
0 голосов
/ 30 апреля 2020

Я не могу этого сделать. Мне нужно l oop через несколько URL-адресов в файле CSV, но это не работает. У каждой строки в csv есть URL, как в 'https://www.reuters.com/companies/api/getFetchCompanyKeyMetrics/AAPL.OQ', изменяющий последний тикер. Вот мой код.

import requests
import json
import csv
import pandas as pd

stocks_arr =[]
pfolio_file= open("URLTickers.csv", "r")
for line in pfolio_file:
    indv_stock_arr = line.strip().split(',')
    stocks_arr.append(indv_stock_arr)
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
    jsonData = requests.get(line, headers=headers).json()

print(stocks_arr)

for stock in stocks_arr:
    data = {
        'Ticker': [],
        'Beta': [],
        'DY': [],
        'VOL': [],
        'P/L': [],
        'Cresc5A': [],
        'LPA': [],
        'VPA': [],
        'Ultimo': [],
      }

    ticker = jsonData['market_data']['ric']
    beta = jsonData['market_data']['beta']
    DY = jsonData['market_data']['current_dividend_yield_ttm']
    VOL = jsonData['market_data']['share_volume_3m']
    PL = jsonData['market_data']['pe_normalized_annual']
    cresc5a = jsonData['market_data']['eps_growth_5y']
    LPA = jsonData['market_data']['eps_normalized_annual']
    VPA = jsonData['market_data']['book_value_share_quarterly']
    Ultimo = jsonData['market_data']['last']

    data['Ticker'].append(ticker)
    data['Beta'].append(beta)
    data['DY'].append(DY)
    data['VOL'].append(VOL)
    data['P/L'].append(PL)
    data['Cresc5A'].append(cresc5a)
    data['LPA'].append(LPA)
    data['VPA'].append(VPA)
    data['Ultimo'].append(Ultimo)

table = pd.DataFrame(data, columns=['Ticker', 'Beta', 'DY', 'VOL', 'P/L', 'Cresc5A', 'LPA', 'VPA', 'Ultimo'])
table.index = table.index + 1
table.to_csv('CompleteData.csv', sep=',', encoding='utf-8', index=False)
print(table)

Это ответ:

ticker = jsonData['market_data']['ric']
Key Error: 'ric'

Что я делаю не так?

1 Ответ

1 голос
/ 30 апреля 2020

Проблема кажется ответом, полученным вами на запрос. Запрос GET выполнен успешно, но ответ JSON не имеет вложенного ключа, который вы запрашиваете.

ticker = jsonData['market_data']['ric']

Убедитесь, что структура JSON имеет статус c. Иногда определенный ключ не появляется в определенных условиях. Поэтому, если ключ ric вообще не существует, вам может потребоваться добавить условие перед попыткой анализа ответа.
Например,

if 'ric' not in jsonData['market_data']:
    print(f"Incomplete data. Skipping.")

Бонусные баллы, если вы используете обработку исключений .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...