import os, time
import traceback
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
basedir = os.path.dirname(os.path.abspath(__file__))
basedir = os.path.join(basedir, 'Chrome')
opts = webdriver.ChromeOptions()
opts.add_argument('user-data-dir=' + basedir)
d = webdriver.Chrome(options=opts)

# 회차를 선택하는 것

date = '2020-03-13' # < 이 부분에서 날짜를 지정하고 밑에서 스플릿
count = 1 #회차
try:
try:
#d.get('<https://ticket.interpark.com>')
#input()
d.get(‘티케팅주소') # 주소 이동
elem = d.find_element_by_class_name('btn_rev') # 티케팅 클릭
elem.click()
windows = d.window_handles
d.switch_to.window(windows[1])
year = date.split('-')[0] # 날짜를 입력받아 스플릿을 하는 경우
month = date.split('-')[1]
day = date.split('-')[2]
for _ in range(1000):
try:
d.switch_to.frame('ifrmBookStep')
break
except:
pass
m = d.find_element_by_class_name('month')
mnd = m.find_elements_by_xpath('./span/em')
if int(mnd[0].text) != int(year) or int(mnd[1].text) != int(month):
d.execute_script("fnChangeMonth('"+ year + month + "');")
_day = d.find_element_by_link_text(str(int(day)))
_day.click()
counts = d.find_elements_by_xpath('//span[@id="TagPlaySeq"]/ul/li/a')
for _ in range(1000):
counts = d.find_elements_by_xpath('//span[@id="TagPlaySeq"]/ul/li/a')
if counts: break
counts[count-1].click() # '회차'를 클릭
d.switch_to.default_content()
d.switch_to.window(windows[1])
ac = ActionChains(d)
for _ in range(100):
try:
nextbtn = d.find_element_by_id('LargeNextBtn')
ac.move_to_element(nextbtn)
ac.click()
ac.perform()
break
except Exception as e:
print(e)
d.switch_to.frame('ifrmSeat')
for _ in range(100):
try:
fold = d.find_element_by_xpath('//div[@id="divCaptchaFolding"]/a')
fold.click()
break
except:
pass
for _ in range(1000):
try:
d.switch_to.frame('ifrmSeatDetail')
break
except:
pass
seats = d.find_elements_by_xpath('//img[@src="<http://ticketimage.interpark.com/>
TMGSNAS/TMGS/G/1_90.gif"]')
if not seats: # VIP 석이 있습니까? 없다면 다음
seats = d.find_elements_by_xpath('//img[@src="http://
ticketimage.interpark.com/TMGSNAS/TMGS/G/2_90.gif"]')
if seats: # 없을 경우, 일반석이라도 좌석 클릭
seats[0].click()

실습

import time
from selenium import webdriver

# 브라우저를 실행
d = webdriver.Chrome('./chromedriver')
data = {}
try:
    # 네이버 뉴스 페이지로
    d.get('<https://news.naver.com/>')

    keys = [
        'right.ranking_tab_100',
        'right.ranking_tab_101',
        'right.ranking_tab_102',
        'right.ranking_tab_103',
        'right.ranking_tab_104',
        'right.ranking_tab_105',
    ]

    for k in keys:
        header = d.find_element_by_id(k)
        header.click()
        # tap 별로 바뀌는 시간을 고려하여 time을 걸어준다.
        time.sleep(0.5)
        data[header.text] = []

        # id 속성값이 right.ranking_contents인 태그를 찾아줘
        elem = d.find_element_by_id('right.ranking_contents')
        lis = elem.find_elements_by_tag_name('li')

        for li in lis:
            atag = li.find_element_by_tag_name('a')
            # 태그 출력
            print(atag.text)
            data[header.text].append(atag.text)

        # time.sleep(2) - 잘되고 있나 확인용

except Exception as e:
    print(e)

finally:
    d.close()
    d.quit()

from openpyxl import Workbook

# Workbook() - 빈 엑셀을 연다
wb = Workbook()

for key, rows in data.items():
    key = key.replace('/', '-')
    ws = wb.create_sheet(key)
    for row in rows:
        ws.append((row,))

wb.save('results.xlsx')