如何从Python爬虫获取的li标签列表项中提取特定数值
方法1:直接基于标签文本分割(最简单,适配你当前的固定格式场景)
你当前拿到的towing是BeautifulSoup的Tag对象列表,不需要把整个Tag转成字符串处理,直接提取标签内的纯文本做分割即可,天然支持整数和小数:
# 先取匹配到的第一个标签 towing_tag = towing[0] # 提取标签内纯文本并去除首尾空白 spec_text = towing_tag.get_text(strip=True) # 按冒号分割一次,取后半部分的数值字符串 value_str = spec_text.split(':', 1)[1].strip() # 转成数值,要整数用int,要支持小数用float towing_cap = float(value_str) # 如果确定是整数也可以直接转int:towing_cap = int(value_str) print(towing_cap)
这种方法不需要额外依赖,结构固定的情况下效率最高,不会误提取标签属性里的其他数字。
方法2:正则匹配(适配复杂场景,包含千分位、多余字符的情况)
如果数值前后可能有其他无关字符、或者有千分位逗号(比如Maximum Trailering Capacity (lbs.): 7,730.5),可以用正则提取数值部分:
import re towing_tag = towing[0] spec_text = towing_tag.get_text(strip=True) # 匹配所有数字、小数点、千分位逗号 match_res = re.search(r'[\d,.]+', spec_text) if match_res: # 去掉千分位的逗号 value_str = match_res.group().replace(',', '') towing_cap = float(value_str) print(towing_cap)
这种方法兼容性更强,哪怕后续网页的文本格式有小变动也能正常提取数值。
内容的提问来源于stack exchange,提问作者Patrick Catanzaro
相关产品推荐
相关产品推荐

