我想抓取这个网站并从中获取价格。
运行代码时,我总是得到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
我在做什么错了?
答案 0 :(得分:0)
class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)"
它只是由javascript动态生成的分类,因此您需要附加到另一个属性或另一个标签。 另外,请记住,如果没有find()仅返回第一个巧合,则该属性在页面上必须是唯一的