인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ajh7457님의 프로필 이미지

작성한 질문수

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

(필수시청) 수강전 주의사항 5가지

선택자에 공란이 있는 경우

작성

·

50

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

image.png

 

선택자에 공란이 있는 경우 선택자를 어떻게 지정해야 하나요..

답변 1

0

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

보통 대부분 그냥 공백을 무시하고 선택자를 만들면 (.price)

셀레니움에서 알아서 공백을 삭제하고 찾아 줍니다 ㅎㅎ

 

그런데 공백 자체가 문자로 되어 있는 경우,

아래 처럼 찾아야 할 수도 있어요

element = driver.find_element(By.CSS_SELECTOR, '[class="price "]')
ajh7457님의 프로필 이미지
ajh7457
질문자

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()


반영해서 짜봤는데 결과가 제대로 나오지 않습니다.. 도와주세요

ajh7457님의 프로필 이미지

작성한 질문수

질문하기