강의

멘토링

로드맵

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

김한울님의 프로필 이미지
김한울

작성한 질문수

크롤링 연습하고 있는 어디가 문제인지 모르겠어요

작성

·

214

0

XPATH 위치를 특정해서 브랜드명을 출력해볼려고 했는데,

계속 위치를 찾을수없다는 오류가 발생됩니다.

어디서 부터 잘못된건지 모르겠내요 ㅠㅠ
구동 환경은 코랩에서 연습하고 있습니다.

 

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

wd = webdriver.Chrome(options=chrome_options)

url = "https://display.wconcept.co.kr/best?displayCategoryType=10101&gender=All&dateSortType=daily"
wd.get(url)

# 페이지가 완전히 로드될 때까지 기다립니다.
time.sleep(5)

xpath = "//*[@id='container']/div/div[2]/div[3]/div/div/div/div/div/div[1]/span[1]/button/span[1]/span[1]"
product_name = wd.find_element(By.XPATH, xpath).text

with open('product_name.txt', 'w') as f:
    f.write(product_name)

wd.quit()

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 김한울님의 크롤링 문제를 해결해 드리기 위해 몇 가지 조언을 드리겠습니다.

먼저, XPath가 작동하지 않을 때 확인해야 할 사항들이 있습니다:

  1. 웹 페이지가 동적으로 로드 되는 경우, 즉 JavaScript를 통해 나중에 내용이 페이지에 추가되는 경우에는 time.sleep()으로 충분한 대기 시간을 주어야 합니다. 그러나 이 방법은 권장되지 않으며, 가능하다면 Selenium의 WebDriverWaitexpected_conditions을 사용하는 것이 더 좋습니다.

  2. 웹 페이지가 iframe 내부에 콘텐츠를 로드하는 경우, 해당 iframe으로 driver를 전환해야 합니다.

  3. XPath 자체가 잘못되었을 가능성도 있습니다. 웹 브라우저의 개발자 도구를 이용하여 해당 요소가 실제로 존재하는지, 또한 XPath가 정확한지 검증해야 합니다.

  4. 웹 페이지의 업데이트로 인해 DOM 구조가 변경되었을 수도 있으므로, 최신의 웹 페이지 구조를 다시 확인해야 합니다.

  5. find_element 대신 find_elements를 사용하면 여러 요소를 찾을 수 있습니다. 혹시 한 개 이상의 요소가 반환되면 목록으로 받을 수 있고, 이 경우 [0]을 이용하여 첫 번째 요소에 접근할 수도 있습니다.

  6. 웹드라이버 기반의 크롤링 작업은 웹 브라우저의 자동화에 해당하기 때문에, 웹사이트의 로봇 방지 정책에 따라 차단될 수도 있습니다.

코드에 주어진 XPath를 검토하고, 위의 사항들을 체크하면 문제를 해결하는 데 도움이 될 것입니다. 만약 이러한 시도 후에도 문제가 해결되지 않으면 다른 방법을 모색해야 할 수도 있습니다.

브라우저에서 실제 작동하는 XPath를 찾는 방법에 대해 좀 더 자세한 도움이 필요하시다면, 인프런에서 관련 강의를 찾아 학습하시는 것도 좋은 방법일 수 있습니다.

도움이 필요하시면 추가적으로 문의해 주세요.

김한울님의 프로필 이미지
김한울

작성한 질문수

질문하기