>  기사  >  백엔드 개발  >  Selenium Python을 사용하여 #shadow-roots에서 숨겨진 정보를 추출하는 방법은 무엇입니까?

Selenium Python을 사용하여 #shadow-roots에서 숨겨진 정보를 추출하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-19 06:44:01380검색

How to Extract Hidden Information from #shadow-roots Using Selenium Python?

Selenium Python을 사용하여 #shadow-root에서 정보 추출

웹 스크래핑 영역에서 #shadow 내에 숨겨진 요소에서 데이터 추출 -뿌리는 상당한 어려움을 초래할 수 있습니다. 이 기사에서는 Selenium Python을 사용하여 이 장애물을 극복하는 기술을 탐구합니다.

문제:

URL https://www.tiendasjumbo.co/buscar?q=를 고려하세요. 온라인 상점의 마니. 이 사이트에서 제품 라벨 및 기타 필드를 추출하기 위해 사용자는 다음 접근 방식을 시도했습니다.

<code class="python">from selenium import webdriver
import time
from random import randint

driver = webdriver.Firefox(executable_path="C:\Program Files (x86)\geckodriver.exe")
driver.implicitly_wait(10)
time.sleep(4)

url = "https://www.tiendasjumbo.co/buscar?q=mani"
driver.maximize_window()
driver.get(url)
driver.find_element_by_xpath('//h1[@class="impulse-title"]')</code>

그러나 이 접근 방식은 실패했으며 iframe 전환도 마찬가지로 성공하지 못했습니다.

해결책 :

이 사이트에서 데이터를 추출하는 핵심은 해당 제품이 #shadow-root 내에 위치한다는 것을 인식하는 것입니다. 이러한 요소에 액세스하기 위해 Selenium은 ShadowRoot.querySelector() 메소드를 제공합니다. 이 방법을 사용하면 다음 로케이터 전략을 사용하여 제품 라벨을 추출할 수 있습니다.

<code class="python">driver.get('https://www.tiendasjumbo.co/buscar?q=mani')
item = driver.execute_script("return document.querySelector('impulse-search').shadowRoot.querySelector('div.group-name-brand h1.impulse-title span.formatted-text')")
print(item.text)</code>

이 스크립트를 실행하면 제품 라벨이 출력됩니다.

<code class="text">La especial mezcla de nueces, maní, almendras y marañones x 450 g</code>

참조:

자세한 내용은 다음 리소스를 참조하세요.

  • Selenium 및 Python을 사용하여 #shadow-root(열기) 내에서 로그인 요소를 찾을 수 없습니다
  • Selenium 및 Python을 사용하여 https://www.virustotal.com 웹 사이트 내 섀도우 루트(공개) 내에서 이름 필드를 찾는 방법

참고:

Microsoft Edge 및 Google Chrome 버전 96과 관련하여 Selenium의 섀도우 루트 반환 값이 변경되었습니다. 다양한 프로그래밍 언어에서 이러한 변경 사항을 해결하는 방법에 대한 자세한 내용은 솔루션에 제공된 링크를 참조하세요.

위 내용은 Selenium Python을 사용하여 #shadow-roots에서 숨겨진 정보를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.