【发布时间】:2022-02-01 15:07:48
【问题描述】:
我正在开展一个项目,该项目涉及抓取 cmets,然后针对非常大 (10k+) 的一组术语应用情绪分析。实际上,每期要抓取的评论数量并没有那么大,我只想检索过去 1 周(或者最多 1 个月)的 cmets。但是,我发现速度相当令人失望。例如,即使是下面这个非常简单的 sn-p 也会运行 3 分钟以上。假设这样的速度和总共 14,000 个术语,我的代码需要连续运行一个多月才能完成任务!
term = "fastly stock fsly"
results = reddit.subreddit("all").search(term, sort="comments", limit=None)
for submission in results:
for top_level_comment in submission.comments:
if not isinstance(top_level_comment, praw.models.MoreComments):
if all(word for word in term.lower().split() if word in top_level_comment.body.lower()):
print(top_level_comment.body)
是否有机会显着缩短处理时间?我看到双 for 循环是一个糟糕的结构,但不太确定是否可以在这里避免。此外,我知道内部 for 循环会遍历一个可能很长的列表,尽管我很可能只需要前 10-20 个 cmets,但我不清楚是否可以应用 subreddit.search() for一个特定的时间段。我在文档中没有看到任何参数。
【问题讨论】: