首页 > 解决方案 > 尝试提取部分 id 时出现问题

问题描述

所以我试图ids从网站上收集所有内容并从中“提取”数字它在那个网站上看起来像这样:

<div class="market_listing_row number_490159191836499" id="number_490159191836499">
<div class="market_listing_row number_490159191836499" id="number_490159191836499">
<div class="market_listing_row number_490159170836499" id="number_490159170836499">

因此,我使用该 xpath 找到了所有这些,并确保打印了该列表的长度(以及其中的所有元素,同时测试但删除了这部分代码),所以我确定它的工作原理并从站点收集所有 50 个不同的元素.

elements = driver.find_elements_by_xpath('//*[starts-with(@id, "number_") and not(contains(@id, "_name")) ]') 


print("List 2 lenght is:", len(elements))

但是当我尝试制作没有“number_”的数字列表时,id 以我有问题。我用 get_attribute("id") 创建的列表id只是一个 id(例如 number_490159170836499)重复 22 次(它的 id 的长度,所以它必须对它做点什么)。list_of_ids正在按预期工作,结果我得到 490159170836499 但它只有一个元素(我猜它是因为只有那个数字只是重复)。这就是我使用的代码:

for x in elements:
    id = x.get_attribute("id")
    list_of_ids = re.findall("\d+", id)

我还使用此代码在现场打印所有内容ids,因此我确定该elements列表中包含所有内容并且 get_attribute 正在工作。

for ii in elements:
    print(ii.get_attribute("id"))

说清楚我做了import re

标签: pythonselenium

解决方案


您也可以使用拆分方法。

for x in elements:
       id = x.get_attribute("id")
       a =id.split("_")[1]
       print(a)

推荐阅读