📅  最后修改于: 2023-12-03 14:45:40.889000             🧑  作者: Mango
PSAW是一个基于Pushshift.io提供的API而开发的Python包,旨在提供更灵活、更高效的获取Reddit数据的方式。它使用了异步IO技术,并支持复合查询,可以方便地从Reddit论坛中获取大量的数据。
通过pip可以轻松地安装PSAW:
pip install psaw
首先,你需要导入 PushshiftAPI
类:
from psaw import PushshiftAPI
api = PushshiftAPI()
你可以通过以下方式获取一些帖子:
from psaw import PushshiftAPI
api = PushshiftAPI()
results = api.search_submissions(subreddit='askreddit',
filter=['id', 'title', 'permalink', 'num_comments'],
limit=25)
for post in results:
print(post)
以下是介绍完整的查询参数及其使用方式的介绍:
| 参数 | 类型 | 描述 | 默认值 |
| --- | --- | --- | --- |
| after
| int 或 datatime | 返回后于该时间的结果。 | None
|
| before
| int 或 datatime | 返回早于该时间的结果。 | None
|
| limit
| int | 返回结果的数量。 | 100
|
| filter
| 数组 | 返回结果的属性列表 | None
|
| sort
| 字符串 | 对结果排序的方式。 可选值:'desc'(降序),'asc'(升序) | 'desc'
|
| subreddit
| 字符串 | 指定Reddit论坛的名称。 | None
|
| author
| 字符串 | 指定作者名。 | None
|
| selftext
| 字符串 | 包含该文本的帖子。 | None
|
| title
| 字符串 | 标题包含该文本的帖子。 | None
|
| ids
| 数组 | 指定的帖子列表。 | None
|
| url
| 字符串 | 对 URL 包含该文本的帖子。 | None
|
以下是可在返回结果中使用的属性列表:
| 属性 | 描述 |
| --- | ------- |
| id
| 帖子 ID |
| title
| 帖子标题 |
| selftext
| 帖子内容 |
| created_utc
| 帖子发表时间(UTC 时区)|
| permalink
| 帖子链接 |
| num_comments
| 帖子的评论数量 |
| score
| 帖子的得分(点赞数量) |
| upvote_ratio
| 帖子的点赞率 |
| subreddit
| 帖子所在论坛名称 |
| author
| 帖子作者的用户名 |
获取一个 subreddit 中所有帖子:
from psaw import PushshiftAPI
api = PushshiftAPI()
submissions = api.search_submissions(subreddit='learnpython', limit=None)
for submission in submissions:
# do something with submission
print(submission.title, submission.author)
获取一个特定作者的帖子:
from psaw import PushshiftAPI
api = PushshiftAPI()
submissions = api.search_submissions(author='spez')
for submission in submissions:
# do something with submission
print(submission.title)
获取所有与 Big Data 相关的帖子:
from psaw import PushshiftAPI
api = PushshiftAPI()
submissions = api.search_submissions(q='big data')
for submission in submissions:
# do something with submission
print(submission.title)
获取最近一个月"learnpython"中的帖子:
from psaw import PushshiftAPI
api = PushshiftAPI()
before_month = int(time.time())
after_month = int(before_month - 30 * 24 * 60 * 60) # 30天前
submissions = api.search_submissions(subreddit='learnpython',
after=after_month,
before=before_month,
limit=None)
for submission in submissions:
# do something with submission
print(submission.title)
PSAW提供了许多灵活和高效的方法来获取Reddit中的数据。 无论你是一个想要获取Reddit数据并进行分析的研究人员,还是想要使用Reddit数据构建自己的精彩程序的开发人员,PSAW可能是一个很好的选择。 它易于使用,并且已经被许多人证明是一个功能强大的Reddit API客户端库。