试图从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)
答案 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)
仅当print
和price
都不为None时,这将转到downorup
语句。