상세 컨텐츠

본문 제목

파이썬 셀레니움 웹페이지 키워드 텍스트 문자 찾기

코딩

by 땡감 2023. 2. 17. 10:32

본문

반응형

파이썬은 셀레니움이라는 모듈을 통해 웹페이지를 컨트롤 할 수 있다.

이번 포스팅에서는 웹페이지에서 내가 원하는 키워드를 찾아 클릭해보는 방법에 대해 알아보자.

 

포스팅의 실습이 될 URL은 팟빵이라는 사이트다.

우리는 팟빵 사이트에서 오디오북이라는 메뉴를 클릭해보자 한다.

작성자와 동일하게 간단한 테스트를 해보고자 한다면 아래의 사이트로 방문하면 된다.

 

홈 : 팟빵

 

www.podbbang.com

 

웹페이지에서 특정 키워드를 찾아 클릭하는 방법은 작성자가 아는 방법한에서는 두가지가 존재한다.

처음 하나는 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)

실제 작동하는 모습을 보여주고 싶으나 영상 촬영을 해야하는 번거로움 때문에

작성자가 테스트한 전체 샘플 코드만 첨부한다.

대부분의 사이트는 위의 두가지 방법 중 하나는 통하므로 잘 활용하길 바란다.

반응형

관련글 더보기

댓글 영역