python - 循环和抓取金融代码
问题描述
我似乎无法完成这件事。我需要遍历 CSV 文件中的多个 URL,但它不起作用。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'
我究竟做错了什么?
解决方案
问题似乎是您从请求中得到的响应。GET 请求成功,但 JSON 响应没有您要求的嵌套键。
ticker = jsonData['market_data']['ric']
确保 JSON 结构是静态的。有时某些键在某些条件下不会出现。因此,除非密钥ric
根本不存在,否则您可能需要在尝试解析响应之前添加条件。
如
if 'ric' not in jsonData['market_data']:
print(f"Incomplete data. Skipping.")
如果您使用异常处理,则可以加分。
推荐阅读
- javascript - 如何通过 Puppeteer 在 iframe 中使用输入表单?
- web-scraping - 使用 requests-html 呈现页面时,我可以只呈现特定的 javascript 吗?
- python - 烧瓶没有为ajax调用提供结果
- reactjs - 样式化组件性能激发问题
- minio - minio 使用 curl 创建并列出存储桶
- javascript - 调用 Firebase 云函数不返回错误但不执行函数
- python - 确实是scraper bs4,抓取后拆分解析的HTML代码
- flutter - Flutter 错误“无法预编译 devtools:devtools:”
- reactjs - Apollo 客户端使用 GET 请求的查询反应钩子
- node.js - 如何使用 mongodb 将数据从一个表添加到另一个表