Polymor!

네이버 실검 순위 크롤링 안되는 이유 본문

Web

네이버 실검 순위 크롤링 안되는 이유

Megan Kim 2020. 5. 30. 21:46

[크롤링 기초]

 

구글에 크롤링 검색하면 타겟팅으로 네이버 실검 순위가 많이 나오길래 해보았다.

크롬같은 경우 개발자도구를 제공해주니 오른쪽 상단 설정-> 더보기 -> 개발자도구를 클릭하면 아래와 같이 html소스가 나온다. 

 

크롬 개발자 도구

일단 python interpreter에서 beautifulsoup4를 install한다. 이때 4가 아마 3.7 버전 호환되는 거라 그랬던 것같다.

아래 코드와 같이 간단하게 작성하면 span.keyword 클래스의 text가 출력이 되어야한다.

 

import requests    
from bs4 import BeautifulSoup  

source = requests.get("https://www.naver.com").text   
soup = BeautifulSoup(source, "html.parser")
hotKeys = soup.select('span.keyword')
print(hotKeys)

 

그런데 빈 값이 리턴되었다. 구글링의 글과 똑같이 작성했는데 왜 그랬던걸까? 

결론부터 말하자면, html코드가 당시 글 2018년도와 현재 2020년도가 달라졌고 , 내가 놓치고 있던 크롤링의 기본 원리때문이였다.

 

크롤링 기법은 단순 HTML코드를 긁어오는 것이지, 자바 스크립트를 처리하는건 브라우저나 가능한 일이며 크롤링에선 불가하다.

 

requests.get()은 html코드만을 받아온다. 그리고 2018년도의 실시간검색어 데이터는 html코드안에 아래 그림과 같이 list에 데이터가 구조화 되어 있는 것을 확인 할 수 있다. 그런데 지금은 그 데이터들이 Naver DataLab이라는 페이지에 따로 분리가 되어 저장되있으며, naver.com html 소스코드 안에서 이 datalab을 참조하여 데이터를 받아다 띄우는 식으로 구조가 바뀌었다. 

 

 

naver datalab html소스 

 

그래서 datalab 소스로 크롤링을 해보니 아래와 같이 정상적으로 결과가 반환이 되었다.

성공

 

Comments