Mengekstrak Maklumat daripada #shadow-root menggunakan Selenium Python
Dalam bidang pengikisan web, mengekstrak data daripada elemen yang tersembunyi dalam #shadow -akar boleh menimbulkan cabaran yang ketara. Artikel ini meneroka teknik untuk mengatasi halangan ini menggunakan Selenium Python.
Masalah:
Pertimbangkan URL https://www.tiendasjumbo.co/buscar?q= mani dari kedai dalam talian. Untuk mengekstrak label produk dan medan lain daripada tapak ini, pengguna mencuba pendekatan berikut:
<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>
Walau bagaimanapun, pendekatan ini gagal dan menukar iframe terbukti sama-sama tidak berjaya.
Penyelesaian :
Kunci untuk mengekstrak data dari tapak ini terletak pada mengiktiraf bahawa produk terletak dalam #akar-bayang. Untuk mengakses elemen ini, Selenium menyediakan kaedah shadowRoot.querySelector(). Menggunakan kaedah ini, label produk boleh diekstrak menggunakan Strategi Pencari berikut:
<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>
Menjalankan skrip ini mengeluarkan label produk:
<code class="text">La especial mezcla de nueces, maní, almendras y marañones x 450 g</code>
Rujukan:
Untuk mendapatkan maklumat lanjut, rujuk sumber berikut:
Nota:
Mengenai Microsoft Edge dan Google Chrome versi 96, perubahan kepada nilai pulangan akar bayangan untuk Selenium telah diperkenalkan. Rujuk pautan yang disediakan dalam penyelesaian untuk mendapatkan maklumat lanjut tentang menangani perubahan ini dalam bahasa pengaturcaraan yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Maklumat Tersembunyi daripada #shadow-roots Menggunakan Selenium Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!