BeautifulSoup AttributeError:'NoneType'对象没有属性'text'

时间:2019-12-24 10:41:04

标签: python beautifulsoup

我正在尝试学习如何抓取网站,因此不使用API​​。我正在尝试抓取eBay的网站,并且我的脚本运行了几分钟,但由于指出“ AttributeError:'NoneType'对象没有属性'text'”的错误而停止运行。我做了尽职调查,并在Google / StackOverflow帮助中进行了搜索,但找不到任何内容。该错误指向下面的代码,但我不知道如何解决它。

total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text

if total_sold_price:
    total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text

else:
    try:
        total_sold_price = soup.find('a', {'class': 'vi-txt-underline'}).text
    except Exception as e:
        print(e)
        total_sold_price = ""

整个代码:https://pastebin.com/xS4bAwZK

预先感谢,非常感谢。

1 个答案:

答案 0 :(得分:2)

问题是soup.find('span', {'class': 'vi-qtyS-hot-red'})返回None,然后您尝试提取文本.text的None(因此出现错误消息)。您可以通过几种方法来处理它。我所做的只是绕一些逻辑:

此外,您还可以存储文本total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text,如果可以存储文本,则可以执行完全多余的操作。

最后,页面是动态的,因此您可能需要研究API或其他方式来访问数据。

但是对于您提供的代码,也许是这样的:

try:
    total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text
except Exception as e:
    try:
        total_sold_price = soup.find('a', {'class': 'vi-txt-underline'}).text
    except Exception as e:
                print(e)
                total_sold_price = ""