AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.

Shihab Sikder 2023년6월21일
AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.

이 오류는 None이거나 시작되지 않은 개체에서 메서드를 호출하려고 할 때 발생합니다. 메서드를 호출하기 전에 이 오류를 제거하기 위해 개체가 None인지 여부를 확인해야 합니다. 그런 다음 원하는 메서드를 호출합니다.

AttributeError는 속성을 호출하는 동안 발생하는 예외이지만 클래스 정의에서 지원되지 않거나 존재하지 않습니다.

Python에서 AttributeError: 'NoneType' 개체에 'text' 속성이 없습니다.의 원인 및 해결 방법

이 오류는 웹 스크래핑 또는 XML 구문 분석을 수행하는 동안 일반적입니다. 구문 분석 중에 구조화되지 않은 데이터를 받으면 이 오류가 발생합니다.

다음은 몇 가지 이유입니다.

  1. JavaScript가 동적으로 렌더링한 데이터.
  2. 동일한 데이터로 여러 페이지를 스크랩합니다.
  3. XML을 구문 분석하는 동안 검색 중인 노드가 없는 경우.

오류를 제거하기 위해 시도할 수 있는 일반적인 솔루션은 다음과 같습니다.

  1. 속성을 호출하기 전에 요소가 존재하는지 확인하십시오.
  2. 요청에 대한 응답을 확인합니다.

예제 코드

이 오류는 웹 스크래핑에서 자주 발생하므로 웹 스크래핑의 예를 살펴보겠습니다. Python 스크립트를 사용하여 StackOverflow 웹사이트의 제목을 가져오려고 합니다.

코드는 다음과 같습니다.

from bs4 import BeautifulSoup as bs
import requests

url = "https://www.stackoverflow.com/"

html_content = requests.get(url).text
soup = bs(html_content, "html.parser")

if soup.find("title").text is not None:
    print(soup.find("title").text)

출력:

Stack Overflow - Where Developers Learn, Share, & Build Careers

여기에서 우리가 사용한 if 조건이 기존 메서드를 호출하는지 확인하기 위해 없음이 아님임을 알 수 있습니다. 이제 AttributeError와 같은 오류가 표시되지 않습니다.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

관련 문장 - Python Error

관련 문장 - Python AttributeError