본문 바로가기
코딩 연습/파이썬 크롤링

네이버 검색 키워드 자동완성어 추출

by good4me 2022. 6. 29.

goodthings4me.tistory.com

네이버에서 검색어 입력 시 보이는 관련 검색어(자동완성어)를 추출하는 파이썬 크롤링 코드임. html 소스코드 보기로 봐도 보이지 않는 이유는 동적으로 움직이기 때문이며, 이런 경우에는 개발자 도구에서 해당 부분에 대해 코드를 확인해봐야 함

 

 

네이버 자동완성어 추출해보기

네이버에서 아래처럼 검색어를 입력하면 노출되는 관련 검색어들을 자동완성어라 하는데, 이 부분에 대한 추출하는 방법은 다음과 같다.

네이버 검색란에 키워드 입력
네이버 검색란에 키워드 입력

 

크롬 등의 브라우저에서 개발자도구(F12) 창을 열고, Network 탭 밑에 있는 All 또는 JS 부분을 클릭하고 좌측의 Name 부분에서 ac?q=%로 시작하는 것들을 클릭하여 위 이미지 내용과 같은 검색어가 보이는 것(아래 이미지 참고)을 찾아서 드래그하면 된다.

개발자 도구 네트워크 탭
개발자 도구 네트워크 탭

 

해당 내용은 json 형태의 source로 되어있으며, Name 부분에서 마우스 우클릭하여 새탭 열기를 하면 아래처럼 보인다. (여기서 드래그래도 됨

네이버 자동완성어
네이버 자동완성어

 

이 부분에 대해 파이썬 크롤링으로 처리하면 더 간편하게 추출할 수 있다.

 

[파이썬 소스 코드]

import requests
import json


##네이버 검색 자동완성어 추출
def naver_search_keyword(coreKeyword):
    url = f'https://ac.search.naver.com/nx/ac?q={coreKeyword}&con=0&frm=nv&ans=2&r_format=json&r_enc=UTF-8&r_unicode=0&t_koreng=1&run=2&rev=4&q_enc=UTF-8&st=100&_callback=_jsonp_5'
    headers = {'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36')}
  
    response = requests.get(url, headers=headers)
    json_string = response.text.split('(')[1].replace(')', '')
    auto_keywords = json.loads(json_string)  # dict로 변환
    print(auto_keywords)

    keywords = []
    for auto_words in auto_keywords['items']:
        for word in auto_words:
            keywords.append(word[0])
    print(f'검색어 "{coreKeyword}" 자동완성어 추출 결과:\n')
    for w in keywords:
        print(w)
     
 
 naver_search_keyword('모기장')

 

 

good4me.co.kr

 

[실행 결과]

{'query': ['모기장'], 'answer': [], 'intend': [], 'items': [[['원터치 모기장', '0'], ['침대모기장', '0'], ['모기장텐트', '0'], ['대형모기장', '0'], ['모기장', '0'], ['현관모기장', '0'], [' 
모기장 쉘터', '0'], ['유모차 모기장', '0'], ['아기 모기장', '0'], ['사각모기장', '0']]]}
검색어 "모기장" 자동완성어 추출 결과:

원터치 모기장
침대모기장
모기장텐트
대형모기장
모기장
현관모기장
모기장 쉘터
유모차 모기장
아기 모기장
사각모기장

 

 

※ 관련 포스팅 더보기

 

네이버 연관검색어 추출하기 [파이썬 크롤링]

아래 이미지처럼 네이버 검색 결과 페이지 하단에 있는 연관검색어 10개 키워드를 파이썬 크롤링으로 추출하는 코드이다. PC와 모바일 페이지 html 소스코드가 다르기 때문에 2가지 형태 모두 추

goodthings4me.tistory.com

 

 

댓글