def getDOW():
DowURL = ["https://finance.yahoo.com/quote/%5EDJI?p=^DJI"]
# requests data on the website(s) above
page = requests.get(DowURL, headers=headers)
# parses HTML text from website
soup = BeautifulSoup(page.content, "html.parser")
# title = soup.find(class_="D(ib) Fz(18px)").get_text()
name = soup.find(class_= "Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)").get_text()
print (name)
返回错误:
raise InvalidSchema("No connection adapters were found for '%s' % url")
requests.exceptions.InvalidSchema: No connection adapters were found for '['https://finance.yahoo.com/quote/%5EDJI?p=^DJI']'
如果之前已经有人问过这个问题,我很抱歉,但我是 BeautifulSoup 的新手,所以我不确定发生了什么。如果有人可以帮助我或给我建议,我将不胜感激。我试图从多个站点中抓取值,但使用列表失败了,因此制作了单独的函数(我知道这是多么多余)并遇到了此错误。
最佳答案
当您查看页面的 HTML 源代码时,您会发现您感兴趣的对象不存在。原因可能是,只有在浏览器中加载页面后才会加载内容。您可以使用Selenium and Chrome driver去做这个。然而,这样加载数据的效率并不是很高。我过去曾这样做过,但这不是一个好的解决方案。
由于您似乎对股票价格感兴趣,因此可以使用以下方法:
import yfinance as yf
import datetime
start = datetime.datetime(2019,11,15)
end = datetime.datetime(2019,11,16)
data = yf.download('^DJI', start=start, end=end)
print(data)
结果:
[*********************100%***********************] 1 of 1 downloaded
Open High Low Close Adj Close Volume
Date
2019-11-14 27757.20 27800.71 27676.97 27781.96 27781.96 303970000
2019-11-15 27843.54 28004.89 27843.54 28004.89 28004.89 283720000
关于python - 尝试按类抓取 HTML span 值,但返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58903405/