Program Language/Python

(python) selenium 이용하여 시청률 엑셀로 만들기

야곰야곰+책벌레 2023. 11. 22. 17:05
728x90
반응형
import selenium # 여기서는 약자를 붙이지 않았다.
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
driver = webdriver.Chrome() # 우선 경로나 옵션을 넣으면 동작 하지 않음 (해결 안됨)
driver.maximize_window() # 창을 최고 사이즈로 함
driver.get('http://wwww.daum.net') # daum으로 이동

#driver.find .find_element_by_id("q") # 검색란의 ID인 q를 찾아 엘러먼트를 가져옴
#driver.find_element_by_id("q").send_keys("시청률") # 검색란에 '시청률'을 입력함
# 위 함수들이 에러가 나서 셀레니움 클래스를 이용함.
from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'q').send_keys("시청률") # 검색란에 '시청률'을 입력함
#driver.find_element(By.CLASS_NAME, 'ico_pctop').click() # 검색란에 '시청률'을 입력함
driver.find_element(By.XPATH, '/html/body/div[2]/header/div[1]/div/div[1]/form/fieldset/div/div/button[3]').click() # 검색란에 '시청률'을 입력함 // XPATH 이용
driver.find_element(By.XPATH, '/html/body/div[2]/div/main/div/div/div[2]/div/div[2]/div[1]/div[1]/ul/li[1]/a').click() # 일일시청률 보기
rate_text = driver.find_element(By.XPATH, '/html/body/div[2]/div/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/table/tbody').text # 일일시청률 보기

tmp = [i.split() for i in rate_text.split('\n')]
tmp_1 = [tmp[i] + tmp[i + 1] for i in range(0, len(tmp), 2)]
rate_list = [[tmp_1[i][0], " ".join(tmp_1[i][1:-2]),tmp_1[i][-2],tmp_1[i][-1]] for i in range(len(tmp_1))]

# 테이블 만들기
import pandas as pd
df = pd.DataFrame.from_records(rate_list, columns=['순위', '프로그램', '채널', '시청률'])
print(df)

# 액셀로 보기
import xlwings as xw
xw.view(df)

time.sleep(1)
728x90
반응형