DevKim

[초보자를 위한 웹 크롤링 web crawling #3] 네이버 실시간 검색순위 가져오기 본문

데이터 수집 [ Web crawling ]

[초보자를 위한 웹 크롤링 web crawling #3] 네이버 실시간 검색순위 가져오기

on_doing 2020. 4. 20. 22:39
728x90

 

 

 

 

            오늘은 네이버 실시간 검색순위를 가져오는 실습을 진행해보겠습니다.

 

 


1.라이브러리 import

 

먼저 저번에 설치한 BeautifulSoup 라이브러리와 requests 라이브러리를 import를 통해 불러와줍니다.

* 만약 아래 코드를 실행했는데 아무런 변화도 없다면 성공적으로 설치가 완료된 것입니다 ㅎㅎ

 

 

2.실시간 네이버 검색순위 가져오기

 

코드는 이게 전부입니다. 간단하죠 ?? 코드를 하나하나 설명해보겠습니다.

 

requests.get("주소")

:requests 라이브러리를 이용하여 원하는 주소를 가져오는 코드입니다.

저희는 naver의 실시간 검색순위가 필요하니 주소부분에 naver메인창의 주소를 가져오면 됩니다.


 

 

 

html= BeautifulSoup(r.content,"html.parser")

: 보기쉽게 html로 파씽하여 정렬하는 코드입니다.

r.content는 위에서 불러온 주소(변수 r에 저장되어있음)의 content를 가져온다는 뜻입니다.

파씽하여 정렬한것을 html 변수에 저장해 주었습니다.


 

 

 

span=html.select("span.ah_k")

: 위에 정렬한 데이터중 span 태그안에 class가 ah_k 인 리스트를 span 변수에 저장하는 코드입니다.

이부분은 밑에 사진을 보면서 자세하게 설명해볼게요


 

1)먼저 우리는 네이버의 실시간 검색어를 가져와야하니, Crome으로 네이버를 들어간뒤 F12를 누르면 해당 웹페이지에 대한 소스코드가 나와요!! 이 소스코드를 보고 원하는 부분을 추출하는 과정을 하는거예요

 

 

2) 오른쪽 코드 부분에서 ▶를 누르면 숨어있는 태그들이 나오기 시작하는데 코드에 마우스를 올리게되면 그 코드가 어떤 부분을 이루고 있는지가 나와요!!

밑에 이미지처럼 마우스를 올린부분이 네이버의 상단을 구성하고 있기때문에 상단이 파란색으로 칠해진 것 입니다.

우리가 원하는 실시간 검색순위는 저 파란색으로 칠해진 부분 안에 있기 때문에 그 안에서 ▶를 눌러서 원하는 부분에 파란색이 칠해질때까지 찾으면 됩니다!!

 

 

3)아래 보이는 노란색으로 표시된 부분을 선택한후, 네이버 실시간검색 순위에 마우스를 올리면

 

span.ah_k라고 나오는 것을 볼 수 있습니다.

 

이것은 span태그안에 class명이 ah_k로 이루어진 태그로 구성되어있다는 것을 뜻합니다.

마우스를 올리면 <span class="ah_k"> 부분이 파란색으로 칠해지는 것을 보실 수 있을거예요

 

 

※ 참고로 .class탐색이고#은 id 탐색 입니다

--> class와 id에 대한 자세한 내용은 html을 공부해야 이해할 수 있을거예요

그냥 간단히 말하면 어떤 데이터의 별명이라고 생각해두고 이해를 해보는게 좋을거같아요.

 

cnt=0
for i in span:
cnt+=1
print(i.text)
if cnt==20:
break

:이 부분은 위에서 데이터를 가져올때 select 매소드를 사용하였는데, 이때 select 매소드는 데이터가 리스트형태로 저장되기 때문에 for문을 이용하여 리스트 하나하나의 검색어 text를 가져온 것 입니다.

 

코드를 실행하면 아래와 같이 1위부터 20위까지의 실시간 검색 순위가 나오는 것을 보실 수 있습니다 ㅎㅎ

 

자극적인 검색어가 포함되어있어 일부 모자이크처리 하였습니다

 


전체코드

 

import requests

from bs4 import BeautifulSoup



r=requests.get("https://www.naver.com")

html= BeautifulSoup(r.content,"html.parser")

span=html.select("span.ah_k")

cnt=0

for i in span:

cnt+=1

print(i.text)

if cnt==20:

break

 

                                 다음 포스팅은네이버 영화 리뷰 크롤링 에 대해 알아보도록 하겠습니다.

 

 

728x90
Comments