【问题标题】:Scraping options price from yahoo finance using BeautifulSoup and find使用 BeautifulSoup 从 yahoo Finance 抓取期权价格并找到
【发布时间】:2020-11-12 15:28:59
【问题描述】:

我正在构建一个 MS Excel 文档以从 Yahoo Finance、ariva 等获取股票和期权价格。我正在使用 xlwings 和 BeautifulSoup 来获取数据。

一切正常,我从雅虎获取股票价格,我还从 ariva 直接获取股票/德国期权价格到 Excel。不幸的是,期权价格(不是股票价格)更难获得。

我正在使用此代码(例如,股票代码为“NVDA”,日期为“44211”(2021 年 1 月 1 日),option_name 为“NVDA210115C00210000”):

import xlwings as xw
import bs4 as bs
import requests 

@xw.func
def get_stock(ticker,date,option_name):
    url_base = 'http://finance.yahoo.com/quote/'
    new_date = str(86400*(date-25569))
    src_base = requests.get(url_base+ticker+'/options?date='+new_date).text
    soup = bs.BeautifulSoup(src_base,'lxml')

这导致加载https://finance.yahoo.com/quote/NVDA/options?date=1610668800(工作正常)。

如何获得该期权的期权价格:NVDA210115C00210000?我试过了:

    price = soup.find_all('div',attrs={'id':'Col1-1-OptionContracts-Proxy'})[0].find(attrs={'class':'data-col2'}).get_text()

    return[price]

但它只返回此页面上第一个选项的价格。

看图:Yahoo Finance Code and option price我要324,37。

不知何故,我必须找到“NVDA210115C00210000”的位置,然后获取 data-col2 的文本。我前两天刚开始使用 Python,我不是程序员,但我认为应该没那么难。

我如何使用“查找”来找到那个地方然后得到价格?

【问题讨论】:

标签: python beautifulsoup find xlwings


【解决方案1】:

你有很多错误,

    soup = bs.BeautifulSoup(src_base,'lxml')

应该是:

    soup = bs.BeautifulSoup(src_base.content,'lxml')

你不见了.content

我所做的是找到表格行: table_data = soup.find('tr',{'data-reactid':'200'}) 然后在该行中找到数据 option_price = table_data.find('td', {'data-reactid':'206'}).text

def get_stock(ticker,date,option_name):
    url_base = 'http://finance.yahoo.com/quote/'
    new_date = str(86400*(date-25569))
    src_base = requests.get(url_base+ticker+'/options?date='+new_date)
    soup = bs.BeautifulSoup(src_base.content,'lxml')

    table_data = soup.find('tr',{'data-reactid':'200'})
    option_price = table_data.find('td', {'data-reactid':'206'}).text

    print(option_price)

get_stock('NVDA',44211,'NVDA210115C00210000')

>>> 407.35

HTML 代码

<tr class="data-row7 Bgc($hoverBgColor):h BdT Bdc($seperatorColor) H(33px) in-the-money Bgc($hoverBgColor)" data-reactid="200">
 <td class="data-col3 Ta(end) Pstart(7px)" data-reactid="206">407.35</td>

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2020-07-08
    • 1970-01-01
    • 2020-03-12
    • 2020-11-28
    • 1970-01-01
    • 2021-06-07
    • 2018-01-02
    • 1970-01-01
    相关资源
    最近更新 更多