如何将多HTML文件中BeautifulSoup提取结果存入DataFrame单列?
如何将BeautifulSoup提取的记录存入单列DataFrame?
我来帮你调整代码,实现把每条提取的红色字体文本作为单独行,存入只有file列的DataFrame里。思路很简单:先把所有提取到的文本统一收集到一个列表,最后用这个列表生成DataFrame就好。
首先你需要先安装pandas库(如果还没装的话),在终端里运行:
pip install pandas
然后修改你的代码如下:
import glob import os.path from bs4 import BeautifulSoup import pandas as pd # 新增导入pandas库 dir_path = r"C:\My_folder\tmp" # 初始化空列表,用来收集所有提取到的文本记录 records = [] for file_name in glob.glob(os.path.join(dir_path, "*.html")): with open(file_name) as html_file: # 建议指定解析器,避免BeautifulSoup的默认解析器警告 soup = BeautifulSoup(html_file, "html.parser") for i in soup.select('font[color="#FF0000"]'): # 可选:去掉文本前后的空白字符,让内容更整洁 extracted_text = i.text.strip() print(extracted_text) # 把每条提取的文本加入列表 records.append(extracted_text) # 用收集到的列表创建DataFrame,指定列名为"file" df = pd.DataFrame(records, columns=["file"]) # 如果你需要把DataFrame保存到文件,比如CSV格式(不保存索引) df.to_csv(os.path.join(dir_path, "extracted_records.csv"), index=False) # 也可以直接打印查看DataFrame的前几行内容 print(df.head())
关键修改点说明:
- 新增
pandas导入,用来处理DataFrame数据结构 - 用
records列表替代原来的TXT文件写入操作,统一收集所有提取的文本 - 循环结束后,通过
pd.DataFrame()把列表转换成单列DataFrame,列名设为file - 最后可以选择把DataFrame保存成CSV(或Excel等格式),方便后续分析处理
这样所有从HTML里提取的红色字体文本,都会作为单独的行存到DataFrame的file列里啦~
内容的提问来源于stack exchange,提问作者Keval
相关产品推荐
相关产品推荐

