작성
·
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 기술' 강의로 본 강의를 어느정도 소화하신 분들에 한해서 제공하고 있습니다. 단계가 있어서요. 이 부분도 참고해보시면 좋을 것 같습니다.
감사합니다.