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

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'的文件 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值