这是抓取雅虎财经新网页的解决方案[重复]

问题描述 投票:0回答:3

尝试 AttributeError 时出现以下错误:“NoneType”对象没有属性“text”

    import requests
    from bs4 import BeautifulSoup 
    import numpy as np

    headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
     }

     html = requests.get("https://finance.yahoo.com/quote/BSPAX", headers=headers)
     soup = BeautifulSoup(html.text, "html.parser")
     A1=[float(soup.find("fin-streamer", class_="Fw(b) Fz(36px) Mb(-4px) D(ib)").text)]
python beautifulsoup
3个回答
0
投票

这表明BeautifulSoup无法找到该元素。请参阅文档了解这一点。

如果 find() 找不到任何内容,则返回 None:


0
投票

虽然bjdesa给出的答案是正确的,但我想增加它。

这意味着find方法返回None,错误发生在这里:

A1=[float(soup.find("fin-streamer", class_="Fw(b) Fz(36px) Mb(-4px) D(ib)").text)]

这将返回 None

soup.find("fin-streamer", class_="Fw(b) Fz(36px) Mb(-4px) D(ib)")

因此您可以访问 text,因为 None 对象没有 text 属性。


-1
投票

非常感谢您提出的许多无用的评论,我已经知道这里是解决方案:

更换:

    A1=[float(soup.find("fin-streamer", class_="Fw(b) Fz(36px) Mb(-4px) D(ib)").text)]

与:

    A1=[float(soup.find("fin-streamer", class_="livePrice svelte-mgkamr").text)]
© www.soinside.com 2019 - 2024. All rights reserved.