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>
참조:
자세한 내용은 다음 리소스를 참조하세요.
참고:
Microsoft Edge 및 Google Chrome 버전 96과 관련하여 Selenium의 섀도우 루트 반환 값이 변경되었습니다. 다양한 프로그래밍 언어에서 이러한 변경 사항을 해결하는 방법에 대한 자세한 내용은 솔루션에 제공된 링크를 참조하세요.
위 내용은 Selenium Python을 사용하여 #shadow-roots에서 숨겨진 정보를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!