求助:spare_parts模块打印全数据但Excel导出仅获部分数据
问题排查与修复
核心问题
你当前的备件数据处理逻辑存在错误:三个独立的for循环分别遍历所有备件编号、名称、价格,最后仅将每个循环的最后一个值存入字典并添加到列表。这导致每个备件表格只会生成一条数据,而非每条备件对应一条记录,自然导出Excel后数据不完整。
修复方案
需要先定位备件表格的每一行,再在每行内分别提取编号、名称、价格,确保三者一一对应。修改后的备件处理代码如下:
Spare_part_list = soup.find_all('table', class_='data table additional-attributes') for table in Spare_part_list: # 找到表格里的所有数据行 rows = table.find_all('tr') for row in rows: # 在当前行内分别提取三个字段,加上异常处理避免报错 try: Spare_part_number = row.find('td', {'data-th': 'Art. No.:'}).text.strip() except: Spare_part_number = '' try: Spare_part_name = row.find('td', {'data-th': 'Description'}).text.strip() except: Spare_part_name = '' try: Spare_part_price = row.find('td', {'data-th': 'Price:'}).text.strip() except: Spare_part_price = '' # 每一行生成一个备件字典并添加到列表 Spare_parts = { 'Spare part number': Spare_part_number, 'Spare part name': Spare_part_name, 'Spare part price': Spare_part_price } Spare_parts_list.append(Spare_parts)
额外优化建议
- 建议给备件数据添加关联的主产品
Reference(火车模型编号),这样Excel里的备件能对应到具体模型,方便后续使用。只需在Spare_parts字典里添加'Reference': Reference即可。
内容的提问来源于stack exchange,提问作者Filip Chobodicky
相关产品推荐
相关产品推荐

