当前位置:首页 > 编程笔记 > 正文
已解决

提取作者用户名,帖子内容,回复时间

来自网友在路上 189889提问 提问时间:2023-10-23 11:23:16阅读次数: 89

最佳答案 问答题库898位专家为你答疑解惑

import re
import csv# 打开名为'a1.txt'的文件,并以只读模式('r')读取其内容。这里使用了'UTF-8'编码。  
with open('网页源码a1.txt', 'r', encoding='UTF-8') as f:# 读取文件的所有内容并赋值给变量'source'  source = f.read()# 使用正则表达式查找所有匹配'region_header clearfix(.*?)thread_list_bottom clearfix'的字符串,并将结果赋值给变量'every_reply'。  
# 这里使用的是非贪婪匹配,即匹配最少的字符以满足正则表达式。  
every_reply = re.findall('region_header clearfix(.*?)thread_list_bottom clearfix', source, re.S)
# 打印匹配到的结果数量  
print(len(every_reply))# 遍历每个匹配结果  
for each in every_reply:# 在每个匹配结果中查找主题作者的用户名  t1 = re.findall('title="主题作者:(.*?)"', each, re.S)# 在每个匹配结果中查找帖子的内容  t2 = re.findall('threadlist_abs_onlyline ">(.*?)<', each, re.S)# 在每个匹配结果中查找回复的时间  t3 = re.findall('=2023-(.*?)_', each, re.S)
# 打印找到的主题作者的数量  
print(len(t1))
# 创建一个空列表用于保存提取的信息  
result_list = []
# 遍历每个主题作者的用户名  
for i in range(len(t1)):# 创建一个空字典用于保存提取的信息  result = {}# 如果当前主题作者的帖子存在,则提取帖子的内容并去除其中的换行符  if i < len(t2):result['username'] = t1[i]result['content'] = t2[i].replace('\n            ', '')result['reply_time'] = t3[i]# 将提取的信息添加到结果列表中  result_list.append(result)# 打开名为'tieba.csv'的文件,并以写入模式('w')写入数据。这里使用了'UTF-8'编码。
with open('tieba.csv', 'w', encoding='UTF-8') as f:# 创建一个CSV写入器,指定字段名为'username', 'content', 'reply_time'  writer = csv.DictWriter(f, fieldnames=['username', 'content', 'reply_time'])# 写入CSV文件的头部(字段名)  writer.writeheader()# 将提取的信息写入CSV文件中  writer.writerows(result_list)

运行后'tieba.csv'的文件 

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"提取作者用户名,帖子内容,回复时间":http://eshow365.cn/6-22418-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!