python - Python,Selenium Webdriver:我怎样才能找到这个属性的值?
问题描述
我正在编写一个 python 脚本,以使用 selenium Chrome webdriver 从网站获取一些数据。找到所需的元素对我来说效果很好 - 直到现在。现在我正在尝试获取广告 ID(“数据广告链接”的值。
<div class="header w-brk" style="overflow-wrap: break-word;">
<a href="/iad/immobilien/d/eigentumswohnung/wien/wien-1010-innere-stadt/am-werdertor-etages-de-luxe-344939582/" class="" data-ad-link="344939582">
<span itemprop="name">
AM WERDERTOR - ÉTAGES DE LUXE
</span>
</a>
</div>
从这个 HTML 片段中,我需要 data-ad-link 的值。我尝试使用解决这个问题
elem = driver.find_elements_by_xpath("//*[@class='']")
for i in range(count):
#uniqueid = elem[i].get_attribute('data-ad-link')
#uniqueid = driver.execute_script('var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;', elem[i])
print(uniqueid)
在我的调试器中,我看到创建列表效果很好 - 但获取值却没有。所以我已经尝试过element.get_attribute
返回None
(也适用于href!)。我尝试driver.execute_script
了在这里找到的:Selenium webdriver:如何找到元素的所有属性?这只是给了我类、href 和 rel。
有谁知道我怎么能得到这个值?这对我有很大帮助!
我在 Python 上使用 Selenium (v 3.141.0)
解决方案
要提取属性的值,data-ad-link
即344939582,您必须将WebDriverWait诱导为所需的值,visibility_of_element_located()
并且可以使用以下定位器策略:
使用
XPATH
:print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='header w-brk']/a[starts-with(@href, '/iad/immobilien/d/eigentumswohnung/wien/wien-')]/span[@itemprop='name' and normalize-space()='AM WERDERTOR - ÉTAGES DE LUXE']/.."))).get_attribute("data-ad-link"))
推荐阅读
- php - 如何在 WooCommerce 中获取所有订单状态的名称和名称?
- database - 按顺序运行多个 SQL create table 脚本和 \copy 命令,同时还在 psql 中设置 Schema?
- angular - 如何更改 dotnet core Angular 站点的内置身份(服务器托管,非 Angular)页面的 html 和 css?
- sql - PostgreSQL分区并选择具有特定列值的第一行
- java - Spring Boot @JmsListener 拦截器
- python - 将输入形状配置为 Masking + Dense Keras 层
- powerbi - Power BI - 根据条件计算分组值
- scala - par with foreach results random order but not with map
- c# - ANTLR4 UnsupportedOperationException(序列化的 ATN 数据元素 85257 元素 11 超出范围 0..65535)同时为大型语法生成代码
- c# - 左连接,右为空