PRAW bot在需要解析multi时只解析一个子reddit

2024-04-29 07:17:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个bot,它解析包含特定字符的文章标题的特定子项。正如您在下面看到的,在r.subreddit()方法中,我已经传递了'nba',但是还希望bot解析'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()

Tags: runinurltitlebotpostpostssubs
3条回答

如果你想从每个sub得到5个结果,你最好在sub列表上使用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)

以此类推,你为每个sub做一个动作。每个sub会得到5个,做你需要它做的,然后移动到下一个subreddit,希望能有所帮助。你知道吗

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

尝试增加limit参数或将其全部删除,以查看其他子项的结果。你知道吗

How come it's only grabbing the top posts from r/nba?

因为这些子项的相对流行度。你知道吗

如果我们查看您正在进行的查询的web版本,就会发现:

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

/r/nba比其他子网站更受欢迎,所以它的排名靠前(按得分排序)比其他子网站的排名靠后。以下是本年度其他副标题的主要职位,以供参考:

在这篇文章发表的时候,这些子文章中得分最高的是来自/r/勇士的this one,得到5171分。这与top post in /r/nba的63k点相差甚远。你知道吗


arivictor提出了一种从每个sub获取帖子的好方法,即遍历sub列表并逐个获取它们的最上面的帖子。你知道吗

请注意,上述行为不会发生在热列表中。对于热门列表,您可以期望所有相关子站点的分布大致均匀,因为post得分是根据社区大小进行加权的。因此,另一种可能的解决方案如下:

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()

注意,这个解决方案得到的是热门帖子而不是热门帖子。你想要的是热门帖子还是热门帖子取决于你的具体应用。你知道吗

相关问题 更多 >