CSV-файл и l oop список URL в Python - PullRequest
0 голосов
/ 01 мая 2020

Я пытался l oop файл CSV, список URL, с этим кодом, чтобы очистить и сохранить данные в Excel. С одним URL я мог бы сделать это, но, похоже, не могу найти способ сделать это с помощью списка URL (тикеры на фондовом рынке). Это мой код:

import requests
import json
import csv
import pandas as pd

Urls = open('AcoesURLJsonCompleta.csv')
for row in Urls:
    obj_id = row.strip().split(',')

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(row, headers=headers).json()
data = {
    'Ticker': [],
    'Beta': [],
    'DY': [],
    'VOL': [],
    'P/L': [],
    'Cresc5A': [],
    'LPA': [],
    'VPA': [],
    'Ultimo': []
  }

ticker = jsonData['ric']
beta = jsonData['beta']
DY = jsonData['current_dividend_yield_ttm']
VOL = jsonData['share_volume_3m']
PL = jsonData['pe_normalized_annual']
cresc5a = jsonData['eps_growth_5y']
LPA = jsonData['eps_normalized_annual']
VPA = jsonData['book_value_share_quarterly']
Ultimo = jsonData['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)

Выход всегда равен KeyError: с теми jsonData, как, например, KeyError: 'beta'. Как это исправить?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Предполагая, что ваши URL-адреса действительны, и у вас нет других ошибок проверки (например, KeyError), вам необходимо выполнить l oop через все из них и построить для каждого фрейм данных. Затем добавьте фрейм данных в CSV-файл со структурой, такой как:

for row in Urls:
    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(row, headers=headers).json()
    data = {
        'Ticker': [],
        'Beta': [],
        'DY': [],
        'VOL': [],
        'P/L': [],
        'Cresc5A': [],
        'LPA': [],
        'VPA': [],
        'Ultimo': []
    }
    ticker = jsonData['ric']
    beta = jsonData['beta']
    DY = jsonData['current_dividend_yield_ttm']
    VOL = jsonData['share_volume_3m']
    PL = jsonData['pe_normalized_annual']
    cresc5a = jsonData['eps_growth_5y']
    LPA = jsonData['eps_normalized_annual']
    VPA = jsonData['book_value_share_quarterly']
    Ultimo = jsonData['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'])
    with open("append_to_csv.csv", 'a') as f:
        table.to_csv(f, mode='a', header=not f.tell(), index=False)
0 голосов
/ 01 мая 2020

Мне кажется, вы используете beta вместо Beta. Просто исправьте заглавную букву.

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