如何将Beautiful Soup处理后的字符串结果转为DataFrame行数据
解决方案
问题根源
你之前的代码把所有条目拼接成了单个大字符串,如果循环时直接重复添加这个字符串,自然会得到n次重复的结果。正确的做法是先把每个条目单独提取为列表元素,再转为DataFrame。
修改后的代码
import pandas as pd from bs4 import BeautifulSoup # 假设你已经完成网页解析,得到soup对象 nfl = soup.find_all('li', "player") # 直接生成包含每个条目内容的列表 player_entries = [ f"{ind}. {span.get_text(strip=True).rstrip('+')}" for ind, span in enumerate(nfl, 1) ] # 将列表转为DataFrame,自定义列名 df = pd.DataFrame(player_entries, columns=['球员信息']) print(df)
分步实现方式(适合调试)
如果习惯逐行操作,可以拆成循环逐个处理:
import pandas as pd from bs4 import BeautifulSoup nfl = soup.find_all('li', "player") player_entries = [] for ind, span in enumerate(nfl, 1): # 清洗单条数据的文本 clean_text = span.get_text(strip=True).rstrip('+') # 拼接序号与文本,加入列表 player_entries.append(f"{ind}. {clean_text}") # 转换为DataFrame df = pd.DataFrame(player_entries, columns=['球员信息'])
这样每个条目都会作为DataFrame的独立一行,不会出现重复问题。
内容的提问来源于stack exchange,提问作者Weierstraß Ramirez
相关产品推荐
相关产品推荐

