PRAW bot仅在要解析多个subreddit时才解析

时间:2019-05-13 16:52:03

标签: python bots praw

我正在编写一个机器人,该机器人解析特定subreddit以获得包含特定字符的帖子标题。如下所示,在r.subreddit()方法中,我已经传递了'nba',但还希望该漫游器解析'nbadiscussion''warriors''NYKnicks'

为什么它只是从/r/nba中抢走热门帖子?谢谢!

def run_bot():
    sub = r.subreddit('nba+nbadiscussion+warriors+NYKnicks')
    print("Grabbing subreddit")
    subs = sub.top('year', limit=5)
    print("Grabbing posts in sub")
    for posts in subs:
        article_url = posts.url
        post_title = posts.title
        print(post_title)
        print(article_url)

        string1 = post_title
        durantRegex = re.compile(r'[KevinDurantKnicks]')
        x = durantRegex.search("Kevin Durant Knicks", string1)  

 run_bot()

3 个答案:

答案 0 :(得分:2)

如果您希望每个子项有5个结果,最好使用for循环遍历子项列表。

subs_to_search = ['nba', 'nbadiscussion', 'warriors', 'NYKnicks']

for sub_name in subs_to_search:
    sub = r.subreddit(sub_name)
    subs = sub.top('year', limit=5)

    for posts in subs:
        article_url = posts.url
        post_title = posts.title
        print(post_title)
        print(article_url)

依此类推,因此您正在为每个子动作。每种方法都会得到5个,做您需要做的事,然后转到下一个subreddit Hope,它会有所帮助。

答案 1 :(得分:0)

这是因为您在limit=5中指定的subs = sub.top('year', limit=5)将结果集从组合子reddit限制为总共五个结果。

尝试增大limit参数或将其完全删除,以查看其他子reddit的结果。

答案 2 :(得分:0)

  

为什么只从r / nba抢走头条?

由于每个子Reddit的相对受欢迎程度

如果我们查看您所查询的网络版本,它将变得显而易见:

https://reddit.com/r/nba+nbadiscussion+warriors+NYKnicks/top?t=year

/ r / nba比其他子目录更受欢迎,因此其最高帖子(按得分排序)使其他子目录的帖子黯然失色。供参考,以下是本年度其他子奖项的最高职位:

在撰写本文时,所有这些子评分中得分最高的帖子是来自/ r / warriors的this one,得5171分。这与top post in /r/nba的63k点相去甚远。


阿里·维克多(Ari Victor)提出了一种从每个子网站获取帖子的好方法;即,遍历子列表并逐个获取其顶帖。

请注意,热列表不会发生上述行为。使用热门列表,您可以期望所有涉及到的子索引的分布大致均匀,因为帖子分数由社区规模加权。因此,另一种可能的解决方案如下:

def run_bot():
    print("Grabbing subreddit")
    subs = r.subreddit('nba+nbadiscussion+warriors+NYKnicks')
    print("Grabbing posts in sub")
    for posts in subs.hot(limit=5):
        article_url = posts.url
        post_title = posts.title
        print(post_title)
        print(article_url)

run_bot()

请注意,此解决方案获取热门帖子,而不是热门帖子。您是热门帖子还是热门帖子,取决于您的特定应用程序。