AttributeError:'NoneType'对象没有属性'get_text'阻止我继续前进

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

我是学习Python并尝试制作网络抓取应用程序的新手,但遇到以下错误。这不是完整的代码,但是如果没有首先解决此问题,我将无法继续。

任何帮助将不胜感激!

AttributeError:'NoneType'对象没有属性'get_text'

import requests
from bs4 import BeautifulSoup

url = "https://www.amazon.co.uk/b?node=13978643031&pf_rd_r=7WY9X56GFTSX0ZTD0VQQ&pf_rd_p=7510143e-2d7f-4e64-a435-f4e242b0abc4"
headers = {
    "user-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"}
price = 389


def getPrice():
    page = requests.get(url, headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser')
    title = soup.find(id="productTitle").get_text().strip()
    print(title)


if __name__ == "__main__":
    getPrice()

错误:

跟踪(最近一次通话):文件“ /Users/sumeet/vs_code_py/app.py”,第18行,位于getPrice()中文件“ /Users/sumeet/vs_code_py/app.py”,第13行,位于getPrice标题=soup.find(id =“ productTitle”)。get_text()。strip()AttributeError:'NoneType'对象没有属性'get_text'

python gettext nonetype
1个回答
1
投票

问题可能是BeautifulSoup.find()方法未在id='productTitle'中找到任何内容,因此您试图获取不存在的元素的文本,该元素在Python中表示为原语None。您需要使用if/elsetry/except添加一些逻辑来适应这种可能性(假设这实际上可以在其他页面上使用?如果不是,那么您不是在寻找正确的东西)

[此外,如果要搜索的元素是由Javascript创建的(看起来像这样),则在注释中也有标记,那么找不到它的原因是因为它在抓取的阶段不存在。您需要类似Selenium之类的东西才能真正执行Javascript。

© www.soinside.com 2019 - 2024. All rights reserved.