728x90
반응형
이전에 이미지를 다운받을 수 있도록 코드를 짜는 것을 해봤으면, 이번엔 실시간 검색어 자체를 가져오는 것을 해보자
이미지 다운에 관련해서 궁금하다면 아래 링크로 들어가보면 된다.
2023.08.08 - [python] - [selenium] 웹사이트에서 데이터 긁어오기 - 이미지편
1. 시그널 실시간 검색어 뽑아내기
시그널의 경우 실시간 검색어가 바로 top 10으로 보인다.
그래서 따로 페이지 로딩시간을 체크해서 기다리는 시간을 주는 일을 하지 않아도 된다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
CHROME_DRIVER_PATH = './driver/chromedriver.exe'
service = Service(executable_path=CHROME_DRIVER_PATH)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
URL='https://signal.bz/news'
driver.get(url=URL)
results = driver.find_elements(By.CSS_SELECTOR, "#app > div > main > div > section > div > section > section:nth-child(2) > div:nth-child(2) > div > div > div > a > span.rank-text")
results
keyword_list = []
for keyword in results:
keyword_list.append(keyword.text)
keyword_list
2. nate 실시간 검색어 뽑아내기
nate가 조금 하드하다.
실시간 검색어 창을 좁게 만들어 한번에 5개씩만 보인다.
그래서 바뀌는 타이밍을 정해서 변경해야하고, 네이트에서 처음에 크롤링 시작한 검색어가 6위부터면 순서가 약간 섞이게 되는 일도 발생한다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
CHROME_DRIVER_PATH = './driver/chromedriver.exe'
service = Service(executable_path=CHROME_DRIVER_PATH)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
URL='https://www.nate.com/'
driver.get(url=URL)
nate_list_1st = []
nate_list_2nd = []
for i in range(2):
URL='https://www.nate.com'
driver.get(url=URL)
rank_results = driver.find_elements(By.CSS_SELECTOR,'#olLiveIssueKeyword > li > span.num_rank')
nate_results = driver.find_elements(By.CSS_SELECTOR,'#olLiveIssueKeyword > li > a > span.txt_rank')
for rank, keyword in zip(rank_results, nate_results):
if i == 0:
nate_list_1st.append(f'{rank.text}_{keyword.text}')
elif i == 1:
nate_list_2nd.append(f'{rank.text}_{keyword.text}')
time.sleep(5)
driver.refresh()
result = nate_list_1st + nate_list_2nd
print(result)
driver.quit()
이렇게 하면 완료!
여기서 가장 중요하게 봐야할 것은 elements 부분을 어디서 추출해오냐 였다.
페이지 검사를 눌러 마우스버튼으로 필요한 구간을 클릭해 나타나는 블럭부분을 활용하는것을 꼭 알아두자
728x90
반응형
'데이터' 카테고리의 다른 글
[데이터 분석] pdf 크롤링 파일 csv로 파싱하기 (+ pdf -> pdf 비추와 이유) (0) | 2023.08.14 |
---|---|
pandas 다시 한번 짚고가자! (all in one으로 끝장내기) (0) | 2023.08.09 |
[selenium] 웹사이트에서 데이터 긁어오기 - 이미지편 (0) | 2023.08.08 |
[데이터 분석] 고속도로 실시간 영업소간 통행시간 API 활용하기 (0) | 2023.08.07 |
Chat GPT를 활용해서 pandas DF를 html로 만들기 (0) | 2023.08.03 |