网页内源代码模板如下: <html> <meta http-equiv="Content=-Type" content="text/html; charset=utf-8"> <head> <link href="http://192.167.1.101/hint.css" rel="stylesheet"></link> </head> <body>[talkid:138031370]2014年4月20日 03:55:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">232323</span> 发送 我们已经是好友了,开始聊天吧! <p> ()</p> [talkid:138031371]2014年4月20日 04:45:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">123456</span> 发送 音频 :[<ahref="files/f/f123fsasfsfsjdfrhf_n.m4a"]>音频</a> <p> ()</p> [talkid:138031372]2014年4月20日 04:55:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">123456</span> 发送 音频 :[<ahref="files/f/f123fsasfsfsjdfrhf_n.jpg"]>图片</a> <p> ()</p> [talkid:138031373]2014年4月20日 05:55:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">3234221</span> 发送 我们已经是好友了,开始聊天吧! <p> ()</p> [talkid:138031374]2014年4月20日 06:55:45 , <span class="hint-success" data-hint"">111222</span> 向 <span class="hint-success" data-hint="">1359075</span> 发送 我们已经是好友了,开始聊天吧! <p> ()</p> </body> </html> 利用python爬虫,打开C:/Users/test/Desktop/DIDItest文件夹下多个文件夹内的html文件源代码,并爬取源代码中的ID、时间、发送号码、接收号码、发送内容,时间转化为0000-00-00格式,如果发送内容为音频则提取音频所在位置,反之则保留发送内容,并将爬取的内容写入csv中
时间: 2023-08-14 19:58:17 浏览: 32
您可以使用Python的BeautifulSoup库来解析HTML源代码,并使用csv库将提取的数据写入CSV文件。以下是一个示例代码,实现了您的需求:
```python
import os
import csv
from bs4 import BeautifulSoup
# 定义要读取的文件夹路径
folder_path = 'C:/Users/test/Desktop/DIDItest'
# 创建CSV文件并写入表头
csv_file = open('output.csv', 'w', newline='', encoding='utf-8')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['ID', '时间', '发送号码', '接收号码', '发送内容'])
# 遍历文件夹下的所有文件
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.html'):
file_path = os.path.join(root, file)
# 打开HTML文件并解析
with open(file_path, 'r', encoding='utf-8') as html_file:
soup = BeautifulSoup(html_file, 'html.parser')
# 获取所有消息记录
messages = soup.find_all('body')
# 遍历消息记录并提取需要的信息
for message in messages:
talk_id = message.get('talkid')
time = message.contents[0].strip().split(',')[0][1:]
sender = message.find(class_='hint-success').text
receiver = message.find_all(class_='hint-success')[1].text
content = message.find('a').get('href') if message.find('a') else message.contents[-1].strip()
# 写入提取的数据到CSV文件
csv_writer.writerow([talk_id, time, sender, receiver, content])
# 关闭CSV文件
csv_file.close()
```
请注意,上述代码假设每个HTML文件中只包含一条消息记录。如果HTML文件中有多条消息记录,您可能需要对代码进行适当的修改来提取所有记录。另外,请确保安装了BeautifulSoup库和csv库,您可以使用以下命令进行安装:
```
pip install beautifulsoup4
pip install csv
```
请将代码中的文件夹路径和输出CSV文件名根据您的实际情况进行修改。运行代码后,提取的数据将保存在名为"output.csv"的CSV文件中。