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 참고
'Python' 카테고리의 다른 글
[python] Requests BeautifulSoup 옛날 게시판 정규식 크롤링 (0) | 2022.08.28 |
---|---|
[python] konply 설치 및 다운로드 방법 (0) | 2022.08.28 |
[python] 스마트스토어 해시태그 키워드 추출 수정 버전(2022.08.25 기준) (0) | 2022.08.26 |
[python] 파이썬 한글 hwp 파일 문서 열기 및 텍스트 추출 (0) | 2022.08.25 |
[python] 네이버 블로그 아이디 크롤링 추출 엑셀 가공 (0) | 2022.08.23 |
댓글