인프런 커뮤니티 질문&답변
선택자에 공란이 있는 경우
작성
·
64
답변 1
0
스타트코딩
지식공유자
보통 대부분 그냥 공백을 무시하고 선택자를 만들면 (.price)
셀레니움에서 알아서 공백을 삭제하고 찾아 줍니다 ㅎㅎ
그런데 공백 자체가 문자로 되어 있는 경우,
아래 처럼 찾아야 할 수도 있어요
element = driver.find_element(By.CSS_SELECTOR, '[class="price "]')작성
·
64
답변 1
0
보통 대부분 그냥 공백을 무시하고 선택자를 만들면 (.price)
셀레니움에서 알아서 공백을 삭제하고 찾아 줍니다 ㅎㅎ
그런데 공백 자체가 문자로 되어 있는 경우,
아래 처럼 찾아야 할 수도 있어요
element = driver.find_element(By.CSS_SELECTOR, '[class="price "]')
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
from webdriver_manager.chrome import ChromeDriverManager
import time
# 옵션 설정
options = Options()
options.add_argument("--start-maximized")
options.add_argument("user-agent=Mozilla/5.0")
# 드라이버 실행
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get("https://********************")
# 요소가 로딩될 때까지 대기
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, 'strong[class="name "] a'))
)
# 페이지 파싱
soup = BeautifulSoup(driver.page_source, "html.parser")
# 상품 카드 선택
items = soup.select("li.xans-record-")
# 결과 수집
for item in items:
# 상품명 (class="name " 정확 일치)
name_tag = item.select_one('strong[class="name "] a')
name = name_tag.get_text(strip=True) if name_tag else "상품명 없음"
# 가격 (class="price " 정확 일치)
price_li = item.select_one('[class="price "]')
if price_li:
for hidden in price_li.select("span.displaynone"):
hidden.decompose()
price = price_li.get_text(strip=True)
else:
price = "가격 정보 없음"
print(f"상품명: {name} / 가격: {price}")
driver.quit()
반영해서 짜봤는데 결과가 제대로 나오지 않습니다.. 도와주세요