如何用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
相关产品推荐
相关产品推荐

