抓取当前股票价格并创建数据框

Posted

技术标签:

【中文标题】抓取当前股票价格并创建数据框【英文标题】:Scrape current stock price and create data frame 【发布时间】:2021-03-04 04:03:53 【问题描述】:

我有一个名为 Symbols 的 Pandas 列表,其中包含 30 个股票代码,例如 Apple ->> AAPL,我想获取每个代码的当前股票价格并使用此信息填充数据框。两列:第一列带有股票代码,第二列带有当前价格。运行这部分脚本时,我继续收到以下错误消息:

“ValueError:如果使用所有标量值,则必须传递一个索引”

Stock = []
Price = []
df_temp = []

for symbol in Symbols:
    try:
        params = 
        'symbols': symbol,
        'range': '1d',
        'interval': '1d',
        'indicators': 'close',
        'includeTimestamps': 'false',
        'includePrePost': 'false',
        'corsDomain': 'finance.yahoo.com',
        '.tsrc': 'finance'

        url = 'https://query1.finance.yahoo.com/v7/finance/spark'

        r = requests.get(url, params=params)
        data = r.json()
                
        df_stock = pd.DataFrame('Ticker' : symbol,
                                'Current Price' : data['spark']['result'][0]['response'][0]['indicators']['quote'][0]['close'][0]
                                )
        
        df_temp.append(df_stock)
        df_temp = pd.concat(df_temp, axis = 1)
    except KeyError:
        continue

【问题讨论】:

【参考方案1】:

只需要改变一个部分-

df_stock = pd.DataFrame('Ticker' : [symbol],
                                'Current Price' : [data['spark']['result'][0]['response'][0]['indicators']['quote'][0]['close'][0]]
                                )

输出

    Ticker  Current Price
0   AAPL        118.119

完整代码

Stock = []
Price = []
df_temp = pd.DataFrame()

for symbol in ['AAPL', 'IBM', 'NKE', 'FB']:
    try:
        params = 
        'symbols': symbol,
        'range': '1d',
        'interval': '1d',
        'indicators': 'close',
        'includeTimestamps': 'false',
        'includePrePost': 'false',
        'corsDomain': 'finance.yahoo.com',
        '.tsrc': 'finance'

        url = 'https://query1.finance.yahoo.com/v7/finance/spark'

        r = requests.get(url, params=params)
        data = r.json()
                
        df_stock = pd.DataFrame('Ticker' : [symbol],
                                'Current Price' : [data['spark']['result'][0]['response'][0]['indicators']['quote'][0]['close'][0]]
                                )
        
        df_temp = df_temp.append(df_stock)
    except KeyError:
        continue

说明

您作为值传递给 df_stock 的是标量值,包裹在列表中即可解决。

【讨论】:

但是当你通过它传递多个股票代码时,它会给出一个数据框,其中第一列中的股票代码和第一个股票代码的股票价格:Ticker Current Price 0 [AAPL, IBM, NKE, FB ] 118.155 @JuneSmith 您的代码中还有几个逻辑错误,请立即修改

以上是关于抓取当前股票价格并创建数据框的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中下载雅虎股票价格

VBA 根据股票代码查询价格

python 设计一个名为Stock的类来表示一个公司的股票?

为股票价格建立“月份中的日期”列

数据结构与算法之深入解析“股票价格跨度”的求解思路与算法示例

从 Webscrape 过滤和格式化数据框