import os import re import csv from bs4 import BeautifulSoup # 设置html文件路径 folder_path = r'C:\Users\test\Desktop\DIDItest' output_file = r'C:\Users\test\Desktop\output.csv' # 提取html文件内所需要数据 def extract_html_info(file_path, csv_writer): with open(file_path, 'r', encoding='utf-8') as file: # 读取HTML源代码 html = file.read() soup = BeautifulSoup(html, 'html.parser') # 提取所有的<p>标签 p_tags = soup.find_all('p') for p_tag in p_tags: # 提取ID、时间、发送号码、接收号码和发送内容 talk_id = soup.find('span', class_='hint-success').text.strip() time = soup.find('body').contents[0].strip() send_number = soup.find_all('span', class_='hint-success')[0].text.strip() receive_number = soup.find_all('span', class_='hint-success')[1].text.strip() content = soup.find('p').contents[0].strip() # 判断是否是音频 if '音频' in message: file_url = p_tag.find('a')['href'] csv_writer.writerow([talk_id, timestamp, send_number, receive_number, file_url]) else: csv_writer.writerow([talk_id, timestamp, send_number, receive_number, message]) # 创建CSV文件并写入数据 with open(output_file, 'w', newline='', encoding='utf-8') as file: csv_writer = csv.writer(file) csv_writer.writerow(['ID', '时间', '发送号码', '接收号码', '内容']) # 遍历文件夹及子文件夹,提取HTML文件信息 for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith('.html'): file_path = os.path.join(root, file) extract_html_info(file_path, csv_writer) print("数据已成功写入CSV文件。")
时间: 2024-04-15 18:26:07 浏览: 186
import reimport requestsfrom bs4 import BeautifulSoupimport t
这段代码是用来提取指定文件夹内的HTML文件中的数据,并将提取的数据写入CSV文件中。具体流程如下:
1. 导入必要的模块:os、re、csv和BeautifulSoup。
2. 设置HTML文件夹路径和输出CSV文件路径。
3. 定义一个函数`extract_html_info`用于提取HTML文件中所需的数据。
4. 打开HTML文件,读取其源代码。
5. 使用BeautifulSoup解析HTML源代码。
6. 提取所有的`<p>`标签。
7. 遍历每个`<p>`标签,提取ID、时间、发送号码、接收号码和发送内容。
8. 判断是否为音频消息,如果是,则提取音频文件的URL;否则,直接提取消息内容。
9. 将提取的数据写入CSV文件中。
10. 创建CSV文件,并写入表头行。
11. 遍历指定文件夹及其子文件夹,提取所有的HTML文件,并调用`extract_html_info`函数进行数据提取和写入。
12. 输出成功提示信息。
请注意,这段代码在运行之前需要确保已经安装了相应的依赖包,如bs4。另外,你可能需要根据实际需要修改代码中的部分逻辑。
阅读全文