You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Selenium从文本提取整数?以提取Default Stock后的5为例

嘿,我看你现在的代码只是把文本拆成了单个字符的列表,这样没法直接拿到你想要的整数5。别担心,我给你几种简单靠谱的方法来解决这个问题:

方法1:用正则表达式提取(最推荐)

正则表达式是处理这类字符串提取需求的利器,不管数字在字符串的哪个位置,都能轻松匹配到。你只需要借助Python的re模块就行:

import re

# 先拿到你从页面获取的文本内容
qty = driver.find_elements_by_xpath("//*[@id='container']/div/div[4]/table/tbody/tr/td[10]/div/ul/li")
for quanty in qty:
    quantity_text = quanty.text
    # 匹配字符串中的第一个整数(支持多位数,比如100也能提取)
    num_match = re.search(r'\d+', quantity_text)
    if num_match:
        stock_quantity = int(num_match.group())
        print(stock_quantity)  # 这里就会输出你要的5

简单解释下:r'\d+'这个正则模式会匹配一个或多个连续的数字,re.search()会找到字符串里第一个符合的匹配项,最后转成整数就搞定了。如果你的文本里有多个数字,想用re.findall()提取所有数字也是可以的。

方法2:遍历字符串筛选数字(不用正则的方案)

要是你不想用正则,也可以直接遍历字符串的每个字符,把数字字符挑出来再拼接成整数:

qty = driver.find_elements_by_xpath("//*[@id='container']/div/div[4]/table/tbody/tr/td[10]/div/ul/li")
for quanty in qty:
    quantity_text = quanty.text
    # 筛选出所有数字字符
    digit_chars = [char for char in quantity_text if char.isdigit()]
    if digit_chars:
        stock_quantity = int(''.join(digit_chars))
        print(stock_quantity)

这个方法会把文本里所有的数字字符拼在一起,比如如果文本是"Stock: 123 pieces",会得到123,完全适配你的场景。

修正你原来的代码

你原来的代码把文本转成了单个字符的列表,其实只要在这个基础上加一步筛选数字的逻辑就行:

qty = driver.find_elements_by_xpath("//*[@id='container']/div/div[4]/table/tbody/tr/td[10]/div/ul/li")
for quanty in qty:
    quantity = quanty.text
    quantities = list(str(quantity))
    # 新增:从字符列表里筛选数字并转成整数
    digits = [char for char in quantities if char.isdigit()]
    if digits:
        stock_num = int(''.join(digits))
        print(stock_num)

另外提个小建议:如果你的xpath只会返回一个元素,那直接用driver.find_element_by_xpath()(单数形式)就不用写循环啦,能简化代码~

内容的提问来源于stack exchange,提问作者Priyanka Tester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:17:44