問題 - 我需要從此給定鏈接獲取資料并保存為 csv 格式。所需資料是價格、前收盤價、交易品種。
我是初學者,我不知道如何構建資料,請幫助我提供參考代碼。
任何其他替代方法也可以。
#input data was given below
tikcer = ['msft','amd','aapl']
期望輸出格式-
| 一種 | 乙 | C | |
|---|---|---|---|
| 0 | 261.5 | 266.82 | 微軟 |
| 1 | 94.24 | 102.47 | AMD |
| 2 | 145.54 | 149.24 | 蘋果 |
我得到這個輸出 -
| 一種 | 乙 | C | |
|---|---|---|---|
| 0 | 145.54 | 149.24 | 蘋果 |
我的測驗代碼
import json
import requests
#import pyuser_agent
import pandas as pd
#ua = pyuser_agent.UA()
#headers = {'User-Agent': ua.random }
headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)' }
tikcer = ['msft','amd','aapl']
for i in tikcer:
print(i)
url = f"https://query1.finance.yahoo.com/v8/finance/chart/{i}"
response = requests.get(url, headers=headers)
print("API is working. status code :" str(response.status_code))
datas = json.loads(response.text)
for value in datas['chart']['result']:
print(value)
a = value['meta']['previousClose']
b = value['meta']['regularMarketPrice']
c = value['meta']['symbol']
print(a,b,c)
data = {'A': a, 'B': b, 'C': c}
df = pd.DataFrame.from_dict([data])
df.to_csv('data3.csv')
#df = pd.DataFrame.from_dict({'A': [a], 'B': [b], 'C': [c]})
#df.to_csv('data1.csv')
uj5u.com熱心網友回復:
一開始,使用 NaN 值(空)創建資料框。在回圈中,每個單元格都被填充,其中 df.loc[i, 'A'], i 是行的索引(在左側),'A' 是列名。此外,使用 range 更改回圈以通過 i 訪問索引。
import json
import requests
#import pyuser_agent
import pandas as pd
#ua = pyuser_agent.UA()
#headers = {'User-Agent': ua.random }
headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)' }
tikcer = ['msft','amd','aapl']
df = pd.DataFrame(index=[0, 1, 2], columns=['A', 'B', 'C'])
for i in range(0,len(tikcer)):
print(tikcer[i])
url = f"https://query1.finance.yahoo.com/v8/finance/chart/{tikcer[i]}"
response = requests.get(url, headers=headers)
print("API is working. status code :" str(response.status_code))
datas = json.loads(response.text)
df.loc[i, 'A'] = datas['chart']['result'][0]['meta']['previousClose']
df.loc[i, 'B'] = datas['chart']['result'][0]['meta']['regularMarketPrice']
df.loc[i, 'C'] = datas['chart']['result'][0]['meta']['symbol']
print(df)
輸出
A B C
0 266.2 255.34 MSFT
1 102.47 96.89 AMD
2 149.24 141.809 AAPL
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478289.html
上一篇:如何將整數和字串合并為一個字串?
