작성
·
34
0
import requests
from bs4 import BeautifulSoup
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36',
'Referer':'https://land.naver.com/news/headline.naver'
}
response=requests.get("https://land.naver.com/news/headline.naver",headers=header,verify=False)
html=response.text
soup=BeautifulSoup(html,'html.parser')
soup
title=soup.select_one(".title").text
title
이렇게 썼는데 오류가 나네요
AttributeError Traceback (most recent call last)
Cell In[9], line 16
14 soup=BeautifulSoup(html,'html.parser')
15 soup
---> 16 title=soup.select_one(".title").text
17 title
AttributeError: 'NoneType' object has no attribute 'text'
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
김종미(하윤맘)님, 크롤링을 시도하는 페이지에서 원하는 데이터를 추출하지 못해서 생긴 문제로 보입니다. AttributeError
는 soup.select_one(".title")
부분이 None
을 반환하여 text
속성을 찾을 수 없을 때 발생합니다. 이 문제를 해결하는 몇 가지 방법을 제시드리겠습니다:
CSS 선택자 확인: soup.select_one(".title")
에서 사용한 CSS 선택자 “.title”이 올바른지 확인하세요. 웹 페이지의 구조가 변경되었거나 선택자가 잘못되었을 수 있습니다. 개발자 도구를 활용해 정확한 선택자를 찾으세요.
요청 및 응답 상태 코드 확인: requests 라이브러리의 response
객체의 상태 코드를 확인하여 웹 페이지가 정상적으로 로드됐는지 확인하세요. 예를 들어, response.status_code == 200
이어야 정상입니다.
robots.txt 파일 확인: 크롤링이 허용되지 않은 페이지일 수 있습니다. https://land.naver.com/robots.txt
파일을 확인하여 해당 경로가 크롤링에 제한이 있는지 확인하세요.
JavaScript 렌더링 문제: 일부 웹 사이트는 JavaScript를 사용하여 동적으로 데이터를 로드합니다. 이 경우, requests
로 HTML을 가져올 때 해당 요소가 존재하지 않을 수 있습니다. 이런 경우에는 Selenium과 같은 브라우저 자동화 도구를 사용하는 방법을 고려해볼 수 있습니다.
위의 사항들을 확인하시고 다시 시도해 보시길 바랍니다. 감사합니다.