강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

김종미(하윤맘)님의 프로필 이미지
김종미(하윤맘)

작성한 질문수

크롤링이 안되는 이유가 뭘까요?

작성

·

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 인턴입니다.
김종미(하윤맘)님, 크롤링을 시도하는 페이지에서 원하는 데이터를 추출하지 못해서 생긴 문제로 보입니다. AttributeErrorsoup.select_one(".title") 부분이 None을 반환하여 text 속성을 찾을 수 없을 때 발생합니다. 이 문제를 해결하는 몇 가지 방법을 제시드리겠습니다:

  1. CSS 선택자 확인: soup.select_one(".title")에서 사용한 CSS 선택자 “.title”이 올바른지 확인하세요. 웹 페이지의 구조가 변경되었거나 선택자가 잘못되었을 수 있습니다. 개발자 도구를 활용해 정확한 선택자를 찾으세요.

  2. 요청 및 응답 상태 코드 확인: requests 라이브러리의 response 객체의 상태 코드를 확인하여 웹 페이지가 정상적으로 로드됐는지 확인하세요. 예를 들어, response.status_code == 200이어야 정상입니다.

  3. robots.txt 파일 확인: 크롤링이 허용되지 않은 페이지일 수 있습니다. https://land.naver.com/robots.txt 파일을 확인하여 해당 경로가 크롤링에 제한이 있는지 확인하세요.

  4. JavaScript 렌더링 문제: 일부 웹 사이트는 JavaScript를 사용하여 동적으로 데이터를 로드합니다. 이 경우, requests로 HTML을 가져올 때 해당 요소가 존재하지 않을 수 있습니다. 이런 경우에는 Selenium과 같은 브라우저 자동화 도구를 사용하는 방법을 고려해볼 수 있습니다.

위의 사항들을 확인하시고 다시 시도해 보시길 바랍니다. 감사합니다.

김종미(하윤맘)님의 프로필 이미지
김종미(하윤맘)

작성한 질문수

질문하기