파이썬은 셀레니움이라는 모듈을 통해 웹페이지를 컨트롤 할 수 있다.
이번 포스팅에서는 웹페이지에서 내가 원하는 키워드를 찾아 클릭해보는 방법에 대해 알아보자.
포스팅의 실습이 될 URL은 팟빵이라는 사이트다.
우리는 팟빵 사이트에서 오디오북이라는 메뉴를 클릭해보자 한다.
작성자와 동일하게 간단한 테스트를 해보고자 한다면 아래의 사이트로 방문하면 된다.
웹페이지에서 특정 키워드를 찾아 클릭하는 방법은 작성자가 아는 방법한에서는 두가지가 존재한다.
처음 하나는 contains 함수를 통해 원하는 키워드를 찾는방법.
두번째는 특정 영역의 엘레멘트들을 전부 읽어와 키워드봐 비교하며 찾는 방법이다.
단 전제조건이 있는데 찾고자 하는 키워드가 이미지가 아니라
웹페이지상 F12를 눌러 확인했을 때 텍스트로 보여야 한다는것이다.
사이트에 따라 첫번째, 두번째 방법이 모두 통하는 곳도 있고
첫번째만 통하는 곳, 두번째만 통하는 곳이 있으니 테스트해가며 작동되는 방법을 찾아야 한다.
특히 두번째 방법의 경우 전체 영역을 대상으로 문자열을 비교할 수도 있지만
위의 이미지처럼 찾고자 하는 이미지가 포함되는 영역의 엘레멘트들만 대상으로 찾는것이 좋다.
작성자의 예시를 적용해보면 "오디오북" 이라는 키워드는 "ui-tab" 클래스에 있는것을 확인할 수 있다.
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
import time
url = "https://www.podbbang.com/"
keyword = "오디오북"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
driver.get(url)
time.sleep(2)
#1
driver.find_element(By.XPATH, "//*[contains(text(),'" + keyword + "')]").click()
#2
menus = driver.find_elements(By.CLASS_NAME, "ui-tab") #여러 엘레멘트에서 찾으므로 elements 함수
for i in range(0, len(menus), 1):
if menus[i].text == keyword:
menus[i].click()
while True: #크롬창 닫힘 방지
time.sleep(1)
실제 작동하는 모습을 보여주고 싶으나 영상 촬영을 해야하는 번거로움 때문에
작성자가 테스트한 전체 샘플 코드만 첨부한다.
대부분의 사이트는 위의 두가지 방법 중 하나는 통하므로 잘 활용하길 바란다.
'코딩' 카테고리의 다른 글
파이썬 구글 드라이브 스프레드시트 서비스 연동하기 (0) | 2023.02.28 |
---|---|
파이썬으로 파파고 API 연동하여 번역하기 (2) | 2023.02.27 |
파이썬 뉴스 기사 텍스트 글 요약하기 (0) | 2023.01.26 |
파이썬 numba 모듈 패키지 속도 향상 개선 (0) | 2023.01.16 |
파이썬 easyocr 이미지 문자 인식 (0) | 2023.01.12 |
댓글 영역