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

sarajh0523님의 프로필 이미지
sarajh0523

작성한 질문수

일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석

네이버 쇼핑 정보 크롤링 중 '요소를 찾을 수 없는 오류'

작성

·

340

0

안녕하세요 강사님! 올려주신 강의 잘 수강하고 있습니다.

 

강사님께서는 네이버 쇼핑 사이트에서, 안나플러스 4GF 남자 스킨 제품 리뷰를 크롤링하셨는데

저는 네이버 쇼핑 사이트에서, 설화수 윤조 에센스 6세대 90ml 제품 리뷰 크롤링을 하며 강의 내용을 복습하려고 했습니다.

 

따라서 이렇게 코드를 변경해보았는데요. (이 외에 강사님 코드 중 변경한 부분은 없습니다.)

############################################################################################################
name                = ['설화수 윤조 에센스 6세대 90ml']
ns_address          = "https://search.shopping.naver.com/catalog/41452071623?&NaPm=ct%3Dlom567qo%7Cci%3D0626056d8aed283141db9c13254eb1ca5283307e%7Ctr%3Dslcc%7Csn%3D95694%7Chk%3D20ea68fdd5b7cd13a1caaf25826165e0d0bdd99f"
shoppingmall_review = "/html/body/div/div/div[2]/div[2]/div[2]/div[3]/div[2]/div/div[2]/ul/li[5]/a"
category_total      = "/html/body/div/div/div[2]/div[2]/div[2]/div[3]/div[7]/div[2]/div[2]/ul/li[1]/a"
############################################################################################################

 

이런 오류가 발생했습니다.

---------------------------------------------------------------------------
NoSuchElementException                    Traceback (most recent call last)
<ipython-input-9-b59caa4ea12b> in <cell line: 2>()
      1 # 2023.05.08 변경 find_element_by_xpath TO find_element
----> 2 driver.find_element(By.XPATH, category_total).click() #스크롤 건드리면 안됨
      3 cnt=1
      4 page=1

2 frames
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
    243                 alert_text = value["alert"].get("text")
    244             raise exception_class(message, screen, stacktrace, alert_text)  # type: ignore[call-arg]  # mypy is not smart enough here
--> 245         raise exception_class(message, screen, stacktrace)

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div/div[2]/div[2]/div[2]/div[3]/div[7]/div[2]/div[2]/ul/li[1]/a"}
  (Session info: headless chrome=90.0.4430.212); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
Stacktrace:
#0 0x57930a7c37f9 <unknown>
#1 0x57930a7633b3 <unknown>
#2 0x57930a4ab016 <unknown>
#3 0x57930a4df81e <unknown>
#4 0x57930a5158fb <unknown>
#5 0x57930a502ded <unknown>
#6 0x57930a5139e1 <unknown>
#7 0x57930a502c93 <unknown>
#8 0x57930a4d4ce4 <unknown>
#9 0x57930a4d64d2 <unknown>
#10 0x57930a78f542 <unknown>
#11 0x57930a79ece7 <unknown>
#12 0x57930a79e9e4 <unknown>
#13 0x57930a7a313a <unknown>
#14 0x57930a79f5b9 <unknown>
#15 0x57930a784e00 <unknown>
#16 0x57930a7b65d2 <unknown>
#17 0x57930a7b6778 <unknown>
#18 0x57930a7cea1f <unknown>
#19 0x7cccaee40ac3 <unknown>
#20 0x7cccaeed2a40 <unknown>

캡쳐본 첨부합니다.

Screen Shot 2023-11-05 at 8.31.58 PM.png뭐가 문제고, 어떻게 해결하면 좋을까요?

답변 기다리겠습니다. 감사합니다!

답변 1

1

longvacation님의 프로필 이미지
longvacation
지식공유자

안녕하세요! 강의자입니다
문의주신 내용을 확인해보니 강의자료에 안내드린 url과 html 구성이 조금 다른 페이지로 보입니다.

같은 네이버 가격비교라고 하더라도 제품에 따라 페이지가 다른 케이스도 있기 때문에 제가 설명드린 코드 그대로 하셨을때 어려움이 있으셨을 것 같습니다.

일단 문의주신 내용을 기준으로 보면 아래 에러메시지를 통해 shoppingmall_review category_total 로 받아온 변수의 full xpath 정보가 제 강의자료에서 설명드린 제품 페이지와 다른것으로 추측해볼 수 있을 것 같습니다.
위의 변수 부분을 직접 copy full xpath 를 통해 복사 붙여넣기로 다시 세팅하시면 해결되실 것 같습니다.

에러메시지

image

추가로 리뷰 평점 정보(변수 star)와 리뷰 내용(변수 review)에 대한 html full xpath 정보도 강의내용과 달라서 계속 진행하시다보면 이부분에서도 아마 어려움이 있으실 것 같습니다.

위의 내용만으로는 이해가 어려우실수 있을 것 같아서 제가 문의주신 제품 url 을 기준으로 테스트 해본 코드를 작성해 봤습니다.
공유드리는 강의 코드는 보안 문제로 일주일정도 뒤에 삭제할 예정입니다.
코드를 공유드리는 이유는 추후에 다른 제품군에 적용되실 때 비슷한 문제로 어려움을 겪으실거라는 생각이 들어서 어떤 점이 다른지 한번 보시면서 이해를 돕고자 공유드립니다 :)

https://colab.research.google.com/drive/1y52pisG-PvyRle6T10M3R1tkOZQ0Ds1H?usp=sharing

 

이걸 기준으로 강의에서 설명드린 copy full xpath와 어떤점이 다른지 한번 보시고 다시 적용해보시면 정상적으로 적용되실 것으로 보입니다 🙂

 

강의에 관심 갖고 질문 주셔서 감사 드리고, 추가적인 질문 있으시다면 언제든 또 문의 부탁드리겠습니다.

sarajh0523님의 프로필 이미지
sarajh0523
질문자

강사님 시간 내 주시고 코드까지 자세히 답변해 주셔서 너무 감사드립니다!

 

날씨 쌀쌀한데 감기 조심하세요. 🙂

sarajh0523님의 프로필 이미지
sarajh0523

작성한 질문수

질문하기