使用BeautifulSoup抓取Yahoo Finance不会返回

时间:2019-11-16 11:13:08

标签: python beautifulsoup

我想抓取这个网站并从中获取价格。 运行代码时,我总是得到None,我尝试过使用.find.find_all,但是结果总是相同的:

from bs4 import BeautifulSoup
import requests

r = requests.get('https://finance.yahoo.com/quote/BTC-USD?p=BTC-USD')
soup = BeautifulSoup(r.text, 'xml')


stock_price = soup.find('span', class_='Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)')

# I should get 8,531.30
print(stock_price)

我看到'span', class_='Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)'是动态的,但是后来我试图获得上面的唯一div

stock_price = soup.find_all('div', class_='D(ib) Va(m) Maw(65%) Ov(h)')

或:

stock_price = soup.find_all('div', class_='D(ib) Mend(20px)')

这2个div不是动态的,其中只有两个span是动态的,为什么我不能获取元素?

我已经看过本教程,他们不使用Chrome Selenium

https://www.youtube.com/watch?v=rONhdonaWUo

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)"

它只是由javascript动态生成的分类,因此您需要附加到另一个属性或另一个标签。 另外,请记住,如果没有find()仅返回第一个巧合,则该属性在页面上必须是唯一的