작성한 질문수
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
(필수시청) 수강전 주의사항 5가지
2025. 04. 17. 08:38 작성
·
50
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
선택자에 공란이 있는 경우 선택자를 어떻게 지정해야 하나요..
답변 1
2025. 04. 17. 09:09
보통 대부분 그냥 공백을 무시하고 선택자를 만들면 (.price)
셀레니움에서 알아서 공백을 삭제하고 찾아 줍니다 ㅎㅎ
그런데 공백 자체가 문자로 되어 있는 경우,
아래 처럼 찾아야 할 수도 있어요
element = driver.find_element(By.CSS_SELECTOR, '[class="price "]')
2025. 04. 21. 01:18
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()
반영해서 짜봤는데 결과가 제대로 나오지 않습니다.. 도와주세요
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()
반영해서 짜봤는데 결과가 제대로 나오지 않습니다.. 도와주세요