네이버 실시간 검색어 크롤링 - 파이썬

네이버 실시간 검색어 크롤링 - 파이썬

안녕하세요.

오늘은 파이썬으로 네이버 실시간 검색어 크롤링을 해보겠습니다.

  • 1. pip로 필요한 라이브러리 설치
  • 2. 파이썬으로 네이버 실시간 검색어 크롤링 만들기

환경: 윈도우 10 pro

파이썬 버전: 3.7.4

사용한 라이브러리: requests, beautifulsoup, re

1. pip로 필요한 라이브러리 다운받기.

pip로 requests와 BeautifulSoup를 다운받아보겠습니다.(진짜 이름 특이함..ㅋㅋㅋ)

파이썬이나 pip가 없으신 분 아래 글 참고해주세요.

[프로그래밍/파이썬] - 파이썬 & pip 설치

이제 다운받아보겠습니다.

cmd(명령 프롬프트)를 열어주세요.

먼저 BeautifulSoup부터 다운받겠습니다.

명령 프롬프트 창에 아래 명령어를 입력하세요.(사진 참고, install이 안된다면 cmd를 관리자모드로 실행해보세요.)

pip install bs4

이번에는 requests를 다운받겠습니다.

명령 프롬프트 창에 아래 명령어를 입력하세요.(아래 사진 참고, 안되면 관리자 모드로 실행)

pip install requests

2. 네이버 실시간 검색어 크롤링

2-1 beautifulsoup 사용, re 사용하지 않음

먼저 html을 확인해봅니다.

div.ah_list랑 내용이 있는 span.ah_k부분이 보이네요.

그러면 코드를 아래처럼 만들어보겠습니다.

import requests #설치한 requests를 불러옴
from bs4 import BeautifulSoup #beautifulsoup불러옴

#변수 html에 불러온 내용을 text로 변환해서 넣는다.
html = requests.get('https://www.naver.com/').text

# BeautifulSoup 사용(값이 html이라서 html.parser사용해야 한다고 알려줌)
soup = BeautifulSoup(html, 'html.parser')

#search=soup.select('div.ah_list .ah_k') 
search=soup.select('.PM_CL_realtimeKeyword_list_base .ah_k') 
for i, search_list in enumerate(search,1): #for문을 사용
    print("{}위 {} ".format(i,search_list.text))#실시간 검색어 출력

이제 이걸 실행해보면 네이버 크롤링이 정상적으로 되는 것을 확인할 수 있습니다.

이번에는 이 내용을 텍스트 파일로 만들어보겠습니다.

for문부분의 코드를 아래처럼 바꿔주세요.

with open("검색어.txt","w",encoding="utf-8") as f:
    for i, search_list in enumerate(search,1): #for문을 사용
        print("{}위 {} ".format(i,search_list.text))#실시간 검색어 출력
        f.write("{}위 {} \n".format(i,search_list.text))

이제 같은 폴더에 텍스트 파일이 생길 겁니다.

2-2 조금 더 짧게 만들어보기

그럼 이번에는 조금 더 짧게 해 보겠습니다.

이건 크롤링 공부하다가 어떤 블로그에서 찾은 겁니다.

(beautifulsoup를 안 쓰더라고요.)

import문 빼고 두줄입니다.

import requests
import re 

for i, search_list in enumerate(re.findall('<span class="ah_k">(.*?)</span>',requests.get('https://www.naver.com/').text)[:20],1):
    print("{}위 {} ".format(i,search_list))

위의 코드를 실행하면 아래 사진처럼 출력됩니다.

생각해보니 위의 코드도 이렇게 하면 import부분 빼고 두줄이 되는데 알아보기가 힘들어지네요.

import requests #설치한 requests를 불러옴
from bs4 import BeautifulSoup #beautifulsoup불러옴

for i, search_list in enumerate(BeautifulSoup(requests.get('https://www.naver.com/').text, 'html.parser').select('.PM_CL_realtimeKeyword_list_base .ah_k'),1): #for문을 사용
    print("{}위 {} ".format(i,search_list.text))#실시간 검색어 출력

Designed by JB FACTORY