Selenium(PYTHON) 获取 href 的特定属性

Selenium(PYTHON) get specific attribute of href

所以我有这个 href 元素,我试图只打印 href 内的数字,但是元素之后的 href 路径也包含数字,所以我不太确定如何只获取数字,而不是在你看到的 Mad1000

中打印数字

href https://www.game.com/items/20573078/Mad1000

userLink = driver.find_element_by_xpath(f"//*[@id='bc_owners_table']/tbody/tr[{i+1}]/td[7]/a").get_attribute("href")


userID = re.sub('[^0-9]', '', userLink)
print(userID)

结果最终是 205730781000,但我试图导航到只能打印 20573078 的地方,我该如何实现这个

有 4 个好的方法可以做到这一点:

userID = [int(s) for s in href.split("/") if s.isdigit()]
print(userID[0])

userID = re.findall(r'\d+', href)
print(userID[0])

userID = href.split("/")[4]
print(userID)

userID = re.sub('[^0-9]', '', href)[:-4]
print(userID)

让我解释一下。 PS:我使用了 href 变量,但您可以将其更改为 userLink,它应该可以工作。

第一种方法在每次出现 / 时将字符串拆分为一个列表。然后它检查列表中的每一项的值是否为整数。这是作为列表返回的,因此我们使用 userID[0] 来获取列表中的第一个(通常是唯一的!)元素。 Mad1000 不在列表中的原因是它由字符串和整数组成。该列表将仅包含整数。

第二种方法returns 将字符串中每个数字的列表作为列表。因此,这次 1000 将被添加,因为它是一个数字,因此,我们使用 userID[0] 来获取列表的第一个元素,这将是 20573078 因为没有任何它前面的数字(但是,如果 href 发生变化,可能会有。)

第三种方法/将字符串再次拆分成列表。不同的是这次,我们直接得到列表的第 4 个元素。您可能需要尝试一下,因为根据超链接,您可能需要访问第 3 个或第 5 个元素。这是选项 1 的替代方案,与此类似,但也会检查该值是否为数字。

最后的 1 使用您的方法获取数字,但使用 [:-4] 删除最后 4 个值。

None 这些方法是完美的,但它们应该可以满足您的需求。