본문 바로가기
Python

[python] 검색엔진 줌 ZUM 자동완성 연관 키워드 검색어 크롤링 추출

by 퍼포먼스마케팅코더 2022. 8. 26.
반응형

python 검색엔진 줌 자동완성 연관 키워드 검색어 크롤링 추출

혹시 여기 계신 분들 중에 검색 엔진에 줌 ZUM이라고 있습니다. 네이버, 구글, 카카오, 아니면 다음 이런 유명한 검색엔진 이외에 한국에서 쓰이는 검색엔진 중에서도 ZUM 이라고 있는데요. 비록 점유율은 엄청 적지만 알찬 내용들이 많이 포함되어 있기도 합니다. 그중에서 여러분들이 많이 사용하시는 실시간 키워드 검색어 같은 경우에도 줌 에서 많이 따오는 경우가 있어요. 왜냐하면 지금 네이버나 카카오 같은 경우에는 실시간 검색어의 서비스를 지금 다 종료를 했어요. 지금 보여주는 게 그나마 남아 있는 게 검색엔진 ZUM 입니다. 그다음에 그중에서 저희는 오늘은 실시간 말고 자동 완성하고 그다음에 연관 키워드의 검색어 키워드죠 이거를 크롤링하는 것을 해서 이걸 가지고 왔어요.

 

python 검색엔진 줌 ZUM 자동완성 검색어 키워드 추출

먼저 첫 번째로는 검색엔진 줌 ZUM 에서 자동 완성으로 되어 있는 이 검색어 키워드를 크롤링 즉 텍스트를 추출하는 방법입니다. 이거 첫 번째 방법은 저는 셀레늄을 사용을 했어요. 셀레늄을 바탕으로 해서 열어야지 안에서 키워드를 검색을 하면 자동 완성으로 검색 창 밑에 나오는 키워드를 수집을 할 수 있도록 처음에 그렇게 해서 만들었고요 여기도 마찬가지로 이 키워드랑 이 부분에 여러분들이 궁금해하실 만한 그런 키워드들만 집어넣어서 코딩을 파이선 코딩을 돌려보시면 제대로 된 결과값을 보게 되실 겁니다.

 

import  warnings
import  shutil 
import subprocess
from    selenium import webdriver
from    selenium.webdriver.chrome.options import Options
from    selenium.webdriver.common.alert import Alert
from    selenium.webdriver.common.keys import Keys 
from    selenium.webdriver.common.action_chains import ActionChains
from    selenium.common.exceptions import NoSuchElementException,StaleElementReferenceException
from    selenium.webdriver.support import expected_conditions as EC
from    selenium import webdriver
from    selenium.webdriver.chrome.options import Options
from    selenium.webdriver.common.alert import Alert
from    selenium.webdriver.chrome.service import Service

import  chromedriver_autoinstaller
import  time
import  pyperclip
import  requests
import  datetime
import  autoit #autoit 프로그램 깔아야됨(완료)
from bs4 import BeautifulSoup


warnings.filterwarnings('ignore')

try:
    shutil.rmtree(r"c:\chrometemp")  #쿠키 / 캐쉬파일 삭제
except FileNotFoundError:
    pass
subprocess.Popen(r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrometemp"') # 디버거 크롬 구동
option = Options()
option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
try:
    s = Service(f'./{chrome_ver}/chromedriver.exe')
    driver = webdriver.Chrome(service=s, options=option)
    #driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
except:
    chromedriver_autoinstaller.install(True)
    s = Service(f'./{chrome_ver}/chromedriver.exe')
    driver = webdriver.Chrome(service=s, options=option)
    #driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
    #driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
driver.maximize_window() #최대창
time.sleep(3)    
driver.implicitly_wait(10)

action = ActionChains(driver) #액션지정



#네이버 이동
keyword = '자석거치대'

url = 'https://search.zum.com/search.zum?method=uni&option=accu&qm=g_gnb.issuetrend&query={}'.format(keyword)
driver.get(url)
time.sleep(1)
driver.implicitly_wait(10)

driver.find_element_by_xpath('//*[@id="SearchText"]').click()  #검색창 클릭
time.sleep(1)
driver.implicitly_wait(10)

iframes = driver.find_elements_by_tag_name('iframe')  #아이프레임 확인
#print('현재 페이지에 iframe은 %d개가 있습니다.' % len(iframes))


#for i, iframe in enumerate(iframes):  #아이프레임 확인 방법
#    try:
#        print('%d번째 iframe 입니다.' % i)
#        # i 번째 iframe으로 변경합니다.
#        driver.switch_to.frame(iframes[i])
#        # 변경한 iframe 안의 소스를 확인합니다.
#        print(driver.page_source)
#        # 원래 frame으로 돌아옵니다.
#        driver.switch_to.default_content()
#    except:
#        # exception이 발생했다면 원래 frame으로 돌아옵니다.
#        driver.switch_to.default_content()
#        # 몇 번째 frame에서 에러가 났었는지 확인합니다.
#        print('pass by except : iframes[%d]' % i)
#        # 다음 for문으로 넘어갑니다.


driver.switch_to.frame(iframes[0])  
raw = driver.page_source  #자동완성 검색어 확인
soup = BeautifulSoup(raw, 'html.parser')
#print(soup) 

rel_keywords = soup.find_all('li', {'class' : 'zumout_row'})

for rel_keyword in rel_keywords :
    rel_keyword = rel_keyword.text
    rel_keyword = rel_keyword.replace(" ", "")
    print(rel_keyword) #출력

driver.close()
driver.quit()

python 검색엔진  ZUM  연관 검색어 키워드 추출

그리고 두 번째로 되어 있는 게 연관 검색어예요. 연관 검색어라 하면 여러분들이 어떤 키워드를 검색하면 검색 결과 밑에 연관 검색어라고 뜨는 걸 보실 겁니다. 줌 안에 들어가서 보시면 내용이 바로 나올 텐데 거기에서 나오는 키워드들을 추출하는 거라고 보시면 됩니다. 이건 간단해요. 결과를 보시면 어떠한 키워드가 연관으로 잡히는지 이거를 한눈에 파악할 수 있도록 만들어 놨고요 특별히 이렇게 어렵다거나 그런 내용들은 거의 다 없고 이런 것들이 있구나라는 것만 파악하는 그런 용도로 사용하시면 될 것 같습니다.

 

# 연관검색어

import requests
from    bs4      import BeautifulSoup
import json 
import time

keyword = '자석거치대'

url = 'https://search.zum.com/search.zum?method=uni&option=accu&rd=1&query={}'.format(keyword) 

headers = { 'Accept-Language' : 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6,zh;q=0.5',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36',
            'Accept-Encoding': 'gzip'
}

raw = requests.get(url=url, headers=headers)
soup = BeautifulSoup(raw.text, 'html.parser')

rel_kws = soup.find("dd", {"id" : "relatedKeywordList"}).text

rel_kws = rel_kws.replace(" ", "")
print(rel_kws)

 

 

*깃허브 URL 참고

https://github.com/DBhyeong/digital-marketing/blob/main/%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84%20%EC%A4%8C%20%EC%9E%90%EB%8F%99%EC%99%84%EC%84%B1%20%EC%97%B0%EA%B4%80%20%ED%82%A4%EC%9B%8C%EB%93%9C%20%EC%B6%94%EC%B6%9C_%EC%B5%9C%EC%A2%85_20220825.ipynb

반응형

댓글