📜  使用Python抓取 Reddit(1)

📅  最后修改于: 2023-12-03 15:22:20.274000             🧑  作者: Mango

使用Python抓取 Reddit

如果你对数据挖掘或社交网络分析感兴趣,那么你可能需要爬取 Reddit 上的数据。Reddit 是一个社交新闻聚合网站,用户可以匿名提交内容并对其他用户的投稿进行投票,以推动其在社区内的可见度。这使其成为研究社交网络分析和数据挖掘的理想数据源,而 Python 是实现此目的的理想语言之一。

步骤
  1. 首先,安装PRAW库(Python Reddit API Wrapper)。PRAW提供了一系列Python封装Reddit API的方法。要安装,请在终端中输入以下命令:
pip install praw
  1. 在 Reddit 上申请API密钥。API密钥是Reddit授权访问其API的一种方法。您需要在 Reddit 上申请密钥,才能在代码里使用它。

    • 打开 https://www.reddit.com/prefs/apps
    • 点击 "create app" 或者 "create another app"
    • 输入名称和描述
    • 选择 "web app"
    • 输入重定向URL (可以是 http://localhost:8000)
    • 点击 "create app"
    • 复制 client id 和 client secret;
    • 保存好 client id 和 client secret
  2. 导入PRAW库,并使用Reddit API获取数据。下面是代码的框架。

import praw

# 初始化Reddit
reddit = praw.Reddit(client_id='your_client_id',
                     client_secret='your_client_secret',
                     redirect_uri='http://localhost:8000',
                     user_agent='myBot/0.0.1')

# 使用API获取数据
# your code here

考虑到Reddit上的数据非常丰富,您可能想要使用PRAW提供的各种筛选器来生成需要的数据。如果你遇到问题,可以在 https://www.reddit.com/r/redditdev 上询问Reddit社区。

  1. 获取子reddit信息。使用下面的代码片段可以获取子reddit信息
# 获取 subreddit 
subreddit_name = 'popular'
subreddit = reddit.subreddit(subreddit_name)

# 打印 subreddit 的元数据 
print(f"Title: {subreddit.title}") 
print(f"Description: {subreddit.public_description}") 
print(f"Subscriber count: {subreddit.subscribers:,}") 
  1. 获取帖子信息。使用下面的代码片段可以获取帖子信息
# 获取帖子信息
subreddit_name = 'all'
subreddit = reddit.subreddit(subreddit_name)
for submission in subreddit.top(limit=10):
    print(f"Title: {submission.title}")
    print(f"Score: {submission.score}")
    print(f"ID: {submission.id}")
    print(f"Subreddit: {submission.subreddit}")
    print(f"URL: {submission.url}")
    print(f"Number of Comments: {submission.num_comments}")
    print("---------------------------------\n")

就是这样!

结论

使用Python和PRAW包从Reddit API中提取数据非常简单。通过使用PRAW,您可以轻松地获取子reddit信息和帖子数据,并开始进行数据挖掘和社交网络分析。