如何用PRAW或类似工具在Reddit全站搜索含指定关键词的评论?
用PRAW实现Reddit原生评论搜索的方法
当然可以用PRAW实现和Reddit官网原生搜索相同的效果。你之前的代码是通过stream.comments()实时遍历r/all的新评论,相当于“监听”刚发布的内容,并非调用官网的搜索接口检索全量/历史评论,所以不仅效率低,还搜不到已存在的目标评论。
PRAW提供了reddit.search()方法,直接调用Reddit的原生搜索接口,支持设置和官网URL对应的参数,完美匹配官网搜索的逻辑:
import praw # 初始化PRAW客户端 reddit = praw.Reddit( client_id=CLIENT_ID, client_secret=CLIENT_SECRET, user_agent=USER_AGENT, username=USERNAME, password=PASSWORD ) # 配置搜索参数,和你用的官网URL参数一一对应 search_keyword = "exampletest" # 调用原生搜索接口,指定搜索评论类型 comment_results = reddit.search( q=search_keyword, include_over_18=True, type="comment", sort="relevance", # 和官网默认排序一致,按相关性排序 time_filter="all" # 可选:限制搜索时间范围,比如"day"表示只搜24小时内的评论 ) # 遍历输出搜索到的评论 for comment in comment_results: print(f"评论内容:{comment.body}") print(f"来自帖子:{comment.submission.title}") print(f"评论作者:{comment.author.name if comment.author else '[已删除]'}") print("-" * 50)
这段代码和你访问的官网搜索URL使用的是同一个后端接口,因此搜索速度和官网一样快,能立即返回匹配关键词的评论,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Allexj
相关产品推荐
相关产品推荐

