Python中将爬取的单列列表拆分为多列追加文本导出xls的问题
问题根因
你当前遇到的列合并换行问题,核心是你通过xpath定位到的每个class="Market"的div元素本身就包含了一整组的5条数据,text属性返回的是用\n分隔的5个值,所以你拿到的prices列表长度是实际的组数(示例场景下为3),不是总数据条数15,之前按索引每5位切分的逻辑完全不匹配实际数据结构。
完整解决代码
import pandas as pd # 第一步:展开所有数据为一维列表 all_items = [] for price in prices: # 按换行拆分每个div的内容,去除前后空白,过滤空值 items = [item.strip() for item in price.text.split('\n') if item.strip()] all_items.extend(items) company = 'xyz' group_size = 5 # 校验数据长度是每组大小的整数倍,不足部分直接截断,也可根据需求调整为补空值 valid_length = len(all_items) // group_size * group_size all_items = all_items[:valid_length] # 按每5条分一组 data_groups = [all_items[i:i+group_size] for i in range(0, len(all_items), group_size)] # 生成结构化DataFrame,列名可根据实际需求修改 df = pd.DataFrame( [[company] + group for group in data_groups], columns=['Company', 'A', 'B', 'C', 'D', 'E'] ) # 导出为Excel文件 # 导出.xlsx格式(推荐),需提前安装openpyxl:pip install openpyxl df.to_excel('市场价格数据.xlsx', index=False) # 若必须导出老式.xls格式,需提前安装xlwt:pip install xlwt # df.to_excel('市场价格数据.xls', index=False, engine='xlwt')
内容的提问来源于stack exchange,提问作者user1345331
相关产品推荐
相关产品推荐

