Python爬取动态网站(配置器):提取指定数值失败求助
问题解决:提取HTML中的数值并修正find方法错误
错误原因分析
你代码里的attrs={'span': 'text'}是错误用法——find方法的attrs参数是用来匹配当前标签的属性,而不是用来指定子标签。你的目标label标签根本没有span这个属性,所以自然返回None。
正确提取方案
先正确定位到目标label标签,再逐层提取子元素里的文本,最后过滤出需要的数值:
from bs4 import BeautifulSoup # 假设你的results是解析后的HTML节点列表 vehicle_config = [] for result in results: # 正确定位label标签,去掉错误的attrs参数 label = result.find('label', class_='btn btn-sm btn-outline-secondary') if label: # 获取外层span outer_span = label.find('span') # 提取"36 Monate"里的36 month_part = outer_span.contents[0].strip() # 得到"36 Monate" month_num = month_part.split()[0] # 提取"36" # 获取内层span,提取"+200 €"里的+200 price_span = outer_span.find('span') price_part = price_span.text.strip() # 得到"+200 €" price_num = price_part.split()[0] # 提取"+200" vehicle_config.append({'months': month_num, 'extra_price': price_num})
补充说明
如果文本里的空格或特殊字符(比如€前面的窄空格)影响提取,可以用正则表达式更精准匹配:
import re # 匹配带正负号的数字 month_num = re.search(r'-?\d+', month_part).group() price_num = re.search(r'-?\d+', price_part).group()
这样即使文本格式有小变化,也能稳定提取数值。
内容的提问来源于stack exchange,提问作者ioSven
相关产品推荐
相关产品推荐

