利用python爬虫,提取C:/Users/test/Desktop/DIDItest文件夹下多个文件内的html文件源代码,并提取源代码中的ID、时间、发送号码、接收号码、发送内容,如果发送内容为音频则提取音频所在位置,反之则保留发送内容,并将爬取的内容写入csv中 其中一个网页内源代码如下: <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:138031361]2014年4月20日 03:55:45 , <span class="hint-success" data-hint"">434343</span> 向 <span class="hint-success" data-hint="">232323</span> 发送 我们已经是好友了,开始聊天吧! <p> ()</p> [talkid:138031362]2014年4月20日 04:45:45 , <span class="hint-success" data-hint"">434343</span> 向 <span class="hint-success" data-hint="">123456</span> 发送 音频 :[<ahref="files/f/f123fsasfsfsjdfrhf_n.m4a"]>音频</a> <p> ()</p> [talkid:138031363]2014年4月20日 04:55:45 , <span class="hint-success" data-hint"">434343</span> 向 <span class="hint-success" data-hint="">123456</span> 发送 音频 :[<ahref="files/f/f123fsasfsfsjdfrhf_n.jpg"]>图片</a> <p> ()</p> [talkid:138031364]2014年4月20日 05:55:45 , <span class="hint-success" data-hint"">434343</span> 向 <span class="hint-success" data-hint="">3234221</span> 发送 我们已经是好友了,开始聊天吧! <p> ()</p> [talkid:138031365]2014年4月20日 06:55:45 , <span class="hint-success" data-hint"">434343</span> 向 <span class="hint-success" data-hint="">1359075</span> 发送 我们已经是好友了,开始聊天吧! <p> ()</p> </body> </html>
时间: 2023-08-14 11:58:26 浏览: 84
你可以使用Python的正则表达式来提取HTML文件中的数据,并将提取到的数据写入CSV文件。下面是一个示例代码,可以实现你的需求:
```python
import os
import re
import csv
# 文件夹路径
folder_path = "C:/Users/test/Desktop/DIDItest"
# 提取数据的正则表达式模式
pattern = r'\[talkid:(\d+)\](.*?) (\d{4}年\d{1,2}月\d{1,2}日 \d{1,2}:\d{1,2}:\d{1,2}) , <span class="hint-success" data-hint"">(\d+)</span> 向 <span class="hint-success" data-hint="">(\d+)</span> 发送 (.*?)\n'
# CSV文件路径
csv_file = "output.csv"
# 写入CSV文件的表头
header = ["ID", "时间", "发送号码", "接收号码", "发送内容"]
# 创建CSV文件并写入表头
with open(csv_file, "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(header)
# 遍历文件夹下的所有HTML文件
for filename in os.listdir(folder_path):
if filename.endswith(".html"):
filepath = os.path.join(folder_path, filename)
# 读取HTML文件内容
with open(filepath, "r", encoding="utf-8") as html_file:
source_code = html_file.read()
# 使用正则表达式提取数据
matches = re.findall(pattern, source_code)
# 写入CSV文件
for match in matches:
# 判断发送内容是否为音频
if "音频" in match[5]:
# 提取音频所在位置
audio_start = match[5].index('href="') + 6
audio_end = match[5].index('"]')
audio = match[5][audio_start:audio_end]
writer.writerow([match[0], match[2], match[3], match[4], audio])
else:
writer.writerow(match)
```
这段代码会遍历指定文件夹下的所有HTML文件,提取每个文件中的ID、时间、发送号码、接收号码和发送内容。如果发送内容包含"音频",则会提取音频所在位置;否则,直接写入发送内容。最终将提取的数据写入CSV文件中。
请注意,这只是一个示例代码,你可能需要根据实际情况进行适当的调整和优化。
阅读全文