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

lygmedi님의 프로필 이미지
lygmedi

작성한 질문수

파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

실전 크롤링과 강력한 크롤링 기술 팁2 (업데이트)

네이버 사이트 크롤링 (연습) 오류

작성

·

2.1K

0

안녕하세요...

뻔한 낮은 수준질문일 수 있지만 기 질의응답 내용을 보고도 제 문제와 연결지어 생각이 잘 안되서요...

네이버 GNB 메뉴 리스트를 크롤링해보고 싶었습니다.

■개발자모드에서 (노랑 바탕칠 부분)이 해당 영역을 뜻하는것을 확인하고

■아래와 같이 작성해보았는데

import requests

from bs4 import BeautifulSoup

res = requests.get('https://www.naver.com/')

soup = BeautifulSoup(res.content,'html.parser')

titles = soup.find('div', id='gnb')

for title in titles:

    print(title.get_text())

■ 이런 오류문구가 뜨는데...  GNB 영영을 텍스트로 가져올수 없다 라고 하는거같은데

왜 어떤 차이점 떄문에 못가져오는지 궁금합니다..

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-24-15ace1329085> in <module>
      7 titles = soup.find('div', id='gnb')
      8 for title in titles:
----> 9     print(title.get_text())

~\anaconda3\lib\site-packages\bs4\element.py in __getattr__(self, attr)
    869             raise AttributeError(
    870                 "'%s' object has no attribute '%s'" % (
--> 871                     self.__class__.__name__, attr))
    872 
    873     def output_ready(self, formatter="minimal"):

AttributeError: 'NavigableString' object has no attribute 'get_text'

답변 부탁드려요

감사합니다.

답변 1

0

보통 이런 경우는 해당 태그를 가져오지 못했을 때입니다.

그래서 title 이 None 이되고, 그러다보니 거기에서 get_text() 를 했을 때, 해당 함수(메서드)가 없어서 에러를 내는 것이예요.

제가 각자 원하시는 크롤링 코드를 직접 작성하면서, 테스트를 해볼 수는 없지만, 대략적으로 해당 태그가 동적으로 생성이 된다든지 할 때, 크롬 개발자 모드에서는 분명 나타나지만, 크롤링이 안될 수 있습니다. 크롬 개발자 모드보다, 해당 웹페이지에서 오른쪽 클릭해서, 소스보기 한 다음에, 해당 소스에서 해당 태그가 보이는지 확인해보시면 아실 수 있으실 것 같아요.

동적 페이지의 경우에는 selenium 이라는 별도 크롤링 기술로 크롤링을 해야 하는데 난이도가 조금 있어요. 그래서 이 부분은 별도 강의인 '현존 최강 크롤링 기술: selenium/scrapy 기술' 강의로 본 강의를 어느정도 소화하신 분들에 한해서 제공하고 있습니다. 단계가 있어서요. 이 부분도 참고해보시면 좋을 것 같습니다.

감사합니다.

lygmedi님의 프로필 이미지
lygmedi

작성한 질문수

질문하기