마케터의 기록/파이썬 공부 중

파이썬 셀레니움으로 네이버 연관검색어 크롤링 하기

기록하는 마케터 2021. 1. 22. 23:18
반응형

파이썬 프로그래밍으로 업무 자동화 할 줄 아는 스마트한 퍼포먼스 마케터 되기 첫번째 프로젝트!

 

파이썬 셀레니움으로 네이버 연관검색어를 자동 추출하는, 크롤링, 웹 스크래핑 코드를 작성해보았다. 

 

keyword_list에 연관검색어를 모니터링 하고 싶은 키워드를 작성해서 실행하면, 키워드별 연관검색어가 하나의 열로 저장되도록 만들었다.

 

1. 사용한 라이브러리 목록

- 네이버 연관검색어 크롤링을 하기 위해 셀레니움을 사용했다.

- 크롤링 한 검색어를 엑셀 파일에 저장하기 위해서 openpyxl과 pandas를 사용했다. 

from selenium import webdriver
import time
from openpyxl import Workbook
import pandas as pd

 

2. keyword_list에 모니터링 할 키워드 작성하기

- 네이버 연관검색어를 저장해둘 엑셀 시트를 하나 생성해둔다. 

- 셀레니움 크롬 웹드라이버를 실행시킨다.

- 키워드별 연관검색어를 저장해두기 위해 final이라는 빈 딕셔너리를 생성해둔다.

wb = Workbook()
ws = wb.create_sheet()
driver = webdriver.Chrome()
final = {}

 

3. keyword_list에 모니터링 할 키워드 작성하기

- 여러 라면의 연관검색어를 추출해 보려고, 아래와 같이 신라면, 진라면, 열라면, 안성탕면, 무파마 키워드를 리스트에 넣어주었다.

- 모니터링 하고 싶은 키워드 리스트를 keyword_list에 갯수 제한 없이 자유롭게 기입하면 된다.

# 연관검색어 추출할 쿼리 리스트
keyword_list = ['신라면', '진라면', '열라면', '안성탕면', '무파마']

 

4. keyword_list에 들어있는 키워드의 네이버 연관검색어 가져오기

- for문을 통해 keyword_list에 들어있는 키워드들의 네이버 연관검색어를 모두 크롤링 해서 가져오도록 코드를 작성했다.

- 이 코드는 아무 변형 없이 그대로 사용하면 된다.

for i in range(len(keyword_list)):
   
    URL = "https://search.naver.com/search.naver?ie=UTF-8&sm=whl_hty&query={}".format(keyword_list[i])
    
    driver.get(URL)
    driver.implicitly_wait(3)

    searches = driver.find_elements_by_css_selector(".lst_related_srch li")

    temp = []

    for keyword in searches:
        result = keyword.text
        temp.append(result)

    final[keyword_list[i]] = pd.Series(temp)        

 

5. 크롤링한 네이버연관검색어 엑셀파일로 저장하기

- pandas를 이용해 데이터프레임 형태로 저장한 네이버 연관검색어를 엑셀파일로 저장하는 코드이다.

- 엑셀 파일명을 수정 원할 경우, 'result' 영역에 원하는 파일명을 기입하면 된다.

df = pd.DataFrame(final)

df.to_excel('result.xlsx')

 

6. 네이버 연관검색어 크롤링 전체 코드

from selenium import webdriver
import time
from openpyxl import Workbook
import pandas as pd

wb = Workbook()
ws = wb.create_sheet()
driver = webdriver.Chrome()

final = {}

# 연관검색어 추출할 쿼리 리스트
keyword_list = ['신라면', '진라면', '열라면', '안성탕면', '무파마']

for i in range(len(keyword_list)):
    URL = "https://search.naver.com/search.naver?ie=UTF-8&sm=whl_hty&query={}".format(keyword_list[i])
    driver.get(URL)
    driver.implicitly_wait(3)

    searches = driver.find_elements_by_css_selector(".lst_related_srch li")

    temp = []

    for keyword in searches:
        result = keyword.text
        temp.append(result)

    final[keyword_list[i]] = pd.Series(temp)

df = pd.DataFrame(final)

df.to_excel('result.xlsx')

driver.quit()

 

7. 실행결과

- 아래와 같이 키워드별 연관검색어가 1개의 열로 잘 저장된 것을 확인할 수 있다.

- 무파마는 연관검색어가 7개뿐이라 7개만 저장되었다. 

 

반응형