美丽的汤类名称具有多个空间,并且find_all给出[]

时间:2020-01-29 05:09:09

标签: python beautifulsoup

使用美丽的汤,我试图提取值(317.69),但结果却空了。我尝试提取的html代码块是:

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

我尝试了以下两种编码方式:

value = soup.find_all(attrs={'class': 'Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)'})

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

但是如果我使用[]会得到print(value.text)

注意://span[@class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)"]的XPath成功指向正确的元素。但是对于漂亮的汤,使用python的输出为空。

我首先尝试了从文献资料中找到美丽汤网站的方法:

enter image description here

但是没有运气:(

有人可以建议我从那里提取价值的正确方法吗?我的意思是,如果有多个类,如何提取值

我尝试的代码:

import requests
from bs4 import BeautifulSoup

url = 'https://finance.yahoo.com/quote/AAPL?p=AAPL'

response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
p = soup.find_all(attrs={'class': 'Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)'})
print(p)

1 个答案:

答案 0 :(得分:0)

怎么样?

from simplified_scrapy.simplified_doc import SimplifiedDoc
html ='''
<span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)">317.69</span>
'''
doc = SimplifiedDoc(html)
eles = doc.getElementsByClass('Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)')
print ([ele.text for ele in eles])
# Get the first
ele = doc.getElementByClass('Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)')
print (ele.text)

结果:

['317.69']
317.69