본문 바로가기

카테고리 없음

[웹크롤링] 네이버 - 연관검색어 크롤링하기 (selenium, 크롬 드라이버 사용)

이전 글에서는 requests를 이용해서 검색어에 대한 연관검색어를 크롤링하는 방법에 대해서 살펴보았는데요,

이번 글에서는 selenium과 크롬 드라이버를 이용해서 연관검색어를 크롤링하는 방법에 대해서 살펴보도록 하겠습니다.

 

 

1. 필요한 라이브러리 import 하기

from bs4 import BeautifulSoup     
from selenium import webdriver
import time

 

먼저, 필요한 라이브러리를 설치해줍니다. 이때 selenium 웹 드라이버를 사용했습니다.

 

2. 크롬 드라이버 경로 설정하기

path = "c:/temp/chromedriver_240/chromedriver.exe"   ###chomedriver의 경로 위치
driver = webdriver.Chrome(path)

 

크롬 드라이버로 웹 크롤링을 하는 경우 이 코드를 반드시 작성해주어야 하는데요, 크롬드라이버의 경로가 담긴 변수를 만들고, 이를 webdriver.Chrome() 에 인자로 넣어주고 다시 driver라는 변수에 저장하면 됩니다.

 

3. 키워드 입력받고 네이버 홈페이지 열기

keyword = input("검색할 키워드를 입력하세요 : ")

driver.get("http://naver.com")
time.sleep(2)  # 2초기달리기

 

그 다음, 검색어를 입력할 키워드를 입력받아야 하는데요, input() 함수로 입력받고, keyword라는 변수에 저장하도록 해주었습니다.

 

그리고 두 번째 줄 코드처럼 driver.get() 안에 네이버 홈페이지 주소를 넣어 네이버 페이지가 열리도록 했습니다.

위 코드를 실행하면 새로운 크롬 창에 네이버 홈 화면이 뜨는 것을 확인할 수 있습니다.

 

4. 검색창에 검색어 입력하기

element = driver.find_element_by_id("query")
element.send_keys(keyword)  
element.send_keys("\n")
time.sleep(1)

 

위 코드는 검색창의 element를 찾고, 거기에 위에서 입력받은 검색어를 입력한 뒤, 엔터를 입력해 검색이 되도록 하는 코드입니다.

 

5. 본문 html 가져오기

full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')

 

검색어가 검색된 페이지로 넘어갔다면, 연관 검색어가 있는 본문 html을 가져와야 하는데요, 위 코드를 통해 가져올 수 있습니다.

 

6. 연관검색어 태그 찾기

content_list = soup.select(' div.tit ')

 

한편, f12를 눌러 연관검색어의 태그를 찾으면 'div'라는 태그와 'tit' 라는 클래스 이름을 갖고 있는데요,

태그와 클래스 이름을 이용하여 select() 함수로 크롤링합니다.

 

여기서 content_list 를 출력해보면 다음과 같이 태그가 포함된 연관검색어 텍스트가 저장된 것을 확인할 수 있습니다.

 

[<div class="tit">코로나 라이브</div>,
 <div class="tit">코로나 백신</div>,
 <div class="tit">현재 코로나 단계</div>,
 <div class="tit">코로나 거리두기</div>,
 <div class="tit">코로나 단계</div>,
 <div class="tit">코로나 확진자</div>,
 <div class="tit">사회적 거리두기</div>,
 <div class="tit">코로나 2단계</div>,
 <div class="tit">거리두기</div>,
 <div class="tit">진주 코로나</div>]

 

7. 연관검색어 텍스트만 추출해서 저장하기

content = []
for i in content_list :
    content.append(i.string)

 

그다음, 위에서 추출한 content_list에서 데이터 하나씩 불러와서 string 모듈을 이용해서 텍스트만 추출하고, 새로운 리스트 content에 저장하는 코드입니다.

 

여기까지 다 입력 및 실행을 하고 리스트 content를 출력하면 아래와 같이 키워드에 대한 연관검색어를 얻을 수 있답니다.

 

['코로나 라이브', '코로나 백신', '현재 코로나 단계', '코로나 거리두기', '코로나 단계', '코로나 확진자', '사회적 거리두기', '코로나 2단계', '거리두기', '진주 코로나']

 

 

여기까지 모두 실행을 했다면 위와 같이 연관검색어를 얻을 수 있는데요,

키워드를 바꿔서 다시 실행을 해보시기 바랍니다!