【发布时间】: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