用BeautifulSoup从span标签中提取文本



我试图从这个span标签中获得值26.70:

<span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="31">26.70</span>

我试过了:

html_text2=requests.get('https://finance.yahoo.com/quote/WRD.PA?p=WRD.PA&.tsrc=fin-srch').text
soup2 = BeautifulSoup(html_text2,'lxml')
data = soup2.select_one('span.Fz(36px)').text.strip()
print(data)

但是我得到这个错误:

soupsieve.util.SelectorSyntaxError: Invalid character '(' position 7
line 1:
span.Fz(36px)
^

也许可以避免使用动态类,寻找更稳定的元素,如果有必要,使用这些元素之间的关系来定位该节点:

import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://finance.yahoo.com/quote/WRD.PA?p=WRD.PA&.tsrc=fin-srch', headers = {'User-Agent':'Mozilla/5.0'})
soup = bs(r.content, 'lxml')
print(soup.select_one('div:has(> #quote-market-notice) > span').text)

如果你愿意,也可以不使用BeautifulSoup:

from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('https://finance.yahoo.com/quote/WRD.PA?p=WRD.PA&.tsrc=fin-srch')
element = driver.find_element_by_class_name("Fz(36px)")
print(element.text)

最新更新