如何用Python BeautifulSoup从商品标题中提取酒精度数?
提取商品标题中的酒精度数
观察目标页面的商品标题格式(示例标题类似 Monkey 47 Dry Gin 47 Vol. 0,50l),酒精度数以「数字 + Vol.」的形式呈现,我们可以用正则表达式精准提取。
实现步骤
- 导入Python正则模块
re - 编写匹配规则,定位
Vol.前的数字内容 - 对已获取的
productnaam执行匹配,提取结果并赋值给alcoholpercentage
完整代码示例
import re # 你的现有爬取代码 def getTextFromHTMLItem(HTMLItem): try: return HTMLItem.text except: return " " try: productnaam = getTextFromHTMLItem(soup.find('h1', {'class':'product--title'})) except: productnaam = "" # 提取酒精度数 alcoholpercentage = None # 正则规则:匹配整数/小数,兼容数字与Vol.间的空格,支持德语逗号小数 match = re.search(r'(\d+(?:,\d+)?)\s*Vol\.', productnaam) if match: # 转换德语逗号小数为Python支持的点格式,再转为浮点数 alcohol_str = match.group(1).replace(',', '.') alcoholpercentage = float(alcohol_str)
代码说明
- 正则表达式
r'(\d+(?:,\d+)?)\s*Vol\.:(\d+(?:,\d+)?):捕获整数(如47)或小数(如40,5)形式的酒精度数字\s*:匹配数字与Vol.之间的任意空格Vol\.:精准匹配「Vol.」(转义点号避免匹配任意字符)
- 小数格式兼容:欧洲地区常用逗号作为小数分隔符,通过
replace(',', '.')转换为Python可识别的格式 - 无匹配处理:若标题中无酒精度信息,
alcoholpercentage会保持None,可根据需求改为空字符串或0
内容的提问来源于stack exchange,提问作者Rick Prins
相关产品推荐
相关产品推荐

