• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

링크 변경 애러 질문

23.05.08 22:58 작성 조회수 427

0

###############################!!링크변경!!#############################################################################
name                = ['호박즙']
ns_address          = "https://smartstore.naver.com/goldhouse/products/2698413198?n_keyword=&n_rank=1&n_query=%ED%98%B8%EB%B0%95%EC%A6%99&n_campaign_type=2&n_media=11068&n_campaign=cmp-a001-02-000000006259509&n_ad_group=grp-a001-02-000000031918432&n_ad=nad-a001-02-000000225350866&n_match=3&n_network=search&n_mall_id=ncp_1nm8fw_01&n_mall_pid=2698413198&n_ad_group_type=2&n_keyword_id=&n_ad_extension=&NaPm=ct%3Dlhelvdj4%7Cci%3D0z800028I5vytTVpXKYs%7Ctr%3Dpla%7Chk%3Dca9985f6cfe1114e75168d87872e9d4dd1a915ad"
shoppingmall_review = "/html/body/div[2]/div/div[3]/div[2]/div[2]/div/div[3]/div[4]/div/div[3]/ul/li[2]/a"
category_total      = "/html/body/div[2]/div/div[3]/div[2]/div[2]/div/div[3]/div[6]/div/div[3]/div[1]/div[2]/ul/li[1]/a"
############################################################################################################

header = {'User-Agent': ''}
driver.implicitly_wait(3)
driver.get(ns_address)
req = requests.get(ns_address,verify=True)
html = req.text 
soup = BeautifulSoup(html, "html.parser")
sleep(2)
# 2023.05.08 변경 find_element_by_xpath TO find_element
# element=driver.find_element_by_xpath(shoppingmall_review)
element=driver.find_element(By.XPATH, shoppingmall_review)
driver.execute_script("arguments[0].click();", element)
sleep(2)

예시에서 링크를 변경해서 대입해보면 아래와 같은 애러가 발생하네요..! 뭐가 문제일까요?

 

NoSuchElementException                    Traceback (most recent call last)
<ipython-input-5-15bf827fd88a> in <cell line: 10>()
      8 # 2023.05.08 변경 find_element_by_xpath TO find_element
      9 # element=driver.find_element_by_xpath(shoppingmall_review)
---> 10 element=driver.find_element(By.XPATH, shoppingmall_review)
     11 driver.execute_script("arguments[0].click();", element)
     12 sleep(2)

/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[2]/div/div[3]/div[2]/div[2]/div/div[3]/div[4]/div/div[3]/ul/li[2]/a"}
  (Session info: headless chrome=90.0.4430.212)
Stacktrace:
#0 0x55d22a7987f9 <unknown>
#1 0x55d22a7383b3 <unknown>
#2 0x55d22a480016 <unknown>
#3 0x55d22a4b481e <unknown>
#4 0x55d22a4ea8fb <unknown>
#5 0x55d22a4d7ded <unknown>
#6 0x55d22a4e89e1 <unknown>
#7 0x55d22a4d7c93 <unknown>
#8 0x55d22a4a9ce4 <unknown>
#9 0x55d22a4ab4d2 <unknown>
#10 0x55d22a764542 <unknown>
#11 0x55d22a773ce7 <unknown>
#12 0x55d22a7739e4 <unknown>
#13 0x55d22a77813a <unknown>
#14 0x55d22a7745b9 <unknown>
#15 0x55d22a759e00 <unknown>
#16 0x55d22a78b5d2 <unknown>
#17 0x55d22a78b778 <unknown>
#18 0x55d22a7a3a1f <unknown>
#19 0x7f091bdac609 start_thread
#20 0x7f091afc0133 clone

답변 1

답변을 작성해보세요.

0

안녕하세요. 강의자 입니다.
에러가 발생하는 원인은 제가 강의에서 설명하는 페이지와 질문주신 페이지가 다른 페이지라서 그렇습니다.
강의에서 설명하는 페이지는 네이버가격비교 페이지이고, 질문주신 페이지는 스마트스토어 페이지 입니다.
다른 페이지이다 보니 html 포멧이 약간 다르고, 그렇다보니 셀레니움이 가져오는 과정에서 오류로 결과를 출력하게 됩니다.

아래 페이지에 질문자분이 문의주신 호박즙 스마트스토어 페이지 기준의 코드를 작성해놨으니 참고해주시면 되겠습니다.
강의 특성상 모든 소스코드를 올려놓진 않았고 변경이 필요한 영역에 대해서만 코드를 넣어놨습니다.
감사합니다.
https://colab.research.google.com/drive/1j--8RnhPS9LflAJUlL1oRG6rjWP-wBuq?usp=sharing

코드 테스트 결과
image