jellimin / 2023-kopis

0 stars 0 forks source link

오류 | 인터파크 티켓오픈 정보 수집하기 #12

Open jellimin opened 1 year ago

jellimin commented 1 year ago
# 필요한 모듈 불러오기
import time
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd
from tqdm import tqdm_notebook
from selenium.common.exceptions import NoSuchElementException
import datetime
from datetime import datetime
from datetime import date
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options as ChromeOptions
import warnings
warnings.filterwarnings('ignore')

query = "http://ticket.interpark.com/webzine/paper/TPNoticeList.asp?tid1=in_scroll&tid2=ticketopen&tid3=board_main&tid4=board_main"

driver = webdriver.Chrome(executable_path="./chromedriver.exe")

driver.get(query)
driver.implicitly_wait(5)

elem = driver.find_element(By.XPATH, "/html/body/div/div/div[1]/div[2]/ul/li[3]/a")
elem.send_keys(Keys.ENTER)

제가 짠 코드는 위와 같고, 아래 사진에서 [오픈일순]을 클릭하는 작업까지 수행하도록 코드를 짰습니다.

image

해당 코드를 돌렸을 때, 연두색 형광펜으로 표시된 [오픈일순]이 눌려지는 것이 아니라 노란색 형광펜으로 표시된 [티켓]이 눌려집니다.

image

해당 오류 관련해서 찾아보았더니 위와 같이 경로가 일반 경로가 아닌 자바스크립트로 작성되어 있었고, 이러한 경우에는 아래 링크처럼 해결할 수 있다고 해서 수정해보았으나 계속 오류가 수정되지 않아 도움 요청합니다.

https://velog.io/@rkfksh/Selenium-click%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-element%EB%A5%BC-javascript-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%A1%9C-click%ED%95%98%EA%B8%B0

alsrud2298 commented 1 year ago

확인해보니 해당 버튼이 iframe 페이지 내에 존재해서 발생하는 오류같습니다 ! image 아래 코드로 수정 후 한번 돌려보시면 좋을 것 같습니다 !

driver.get(query)
driver.implicitly_wait(60)

driver.switch_to.frame("iFrmNotice") #iframe 페이지로 전환

elem = driver.find_element(By.XPATH, "/html/body/div/div/div[1]/div[2]/ul/li[3]/a")
elem.send_keys(Keys.ENTER)

참고한 링크 첨부해드립니다 ~ https://hogni.tistory.com/105