如何使用 Selenium Python 从 #shadow-roots 中提取隐藏信息?

Patricia Arquette
发布: 2024-10-19 06:44:01
原创
374 人浏览过

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 (open) 中找到登录元素
  • 如何使用 Selenium 和 Python 在 https://www.virustotal.com 网站内的shadow-root(开放)中找到名字字段

注意:

关于 Microsoft Edge 和 Google Chrome 版本 96,引入了对 Selenium 影子根返回值的更改。请参阅解决方案中提供的链接,了解有关在不同编程语言中解决这些更改的更多信息。

以上是如何使用 Selenium Python 从 #shadow-roots 中提取隐藏信息?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板