美丽的Soup4'NoneType'对象没有属性'text'错误

时间:2018-11-11 06:26:47

标签: python python-3.x beautifulsoup

试图从Yahoo Finance抓取一些数字,但是我一直在为我的soup.find函数之一获取AttributeError。代码:

from bs4 import BeautifulSoup as soup
import requests

#Switch
source = requests.get('https://finance.yahoo.com/quote/SWCH?p=SWCH&.tsrc=fin- srch').text
soup = soup(source, 'lxml')
price = soup.find('span', class_=lambda x:x and set(x.split()).issuperset(set("Trsdu(0.3s) Fw(b) Fz(36px) Fw(b) D(b) Mb(-4px)".split())))
downorup = soup.find('span', class_=lambda x:x and set(x.split()).issuperset(set("Trsdu(0.3s) Fw(500) Pstart(10px) Fz(24px) C($dataRed)".split())))
print("Switch stock: " + price.text + ' ' + downorup.text)

2 个答案:

答案 0 :(得分:1)

在第二个查询中,“ Fz(24px)”必须为“ Fz(14px)”,并且必须没有“ Pstart(10px)”部分:

fetch

通常,您正在使用非常危险的方法来识别数据。如果页面的格式更改,您将不再找到这些字段。 PUT似乎是更可靠的标记。

答案 1 :(得分:0)

错误很可能在print语句中引发。

如果代码找不到price / downorup-它的值将为None。 在这种情况下,您尝试从引发异常的None对象访问属性price.text, downorup.text

为“无”添加检查,例如:

if price and downorup:
    print("Switch stock: " + price.text + ' ' + downorup.text)

仅当printprice都不为None时,这将转到downorup语句。