想要运行仅打印else语句一次的PRAW bot

时间:2019-05-25 05:51:58

标签: python praw

我正在编写一个通过特定subreddit的抓取机器人,并在特定的限制内抓取每个帖子的标题,即20个帖子。然后,它尝试确定每个帖子的标题中是否存在特定的字符串(“ word_to_find”)。

我希望机器人打印出字符串,“在subreddit中找不到Kawhi文章!”如果在任何帖子标题中都找不到指定的“ word_to_find”。

但是,我只希望机器人一次打印一次以上字符串,并且前提是找到的所有标题都不存在“ word_to_find”。

但是,当else语句在我的for循环中运行时,它将打印出找到的带有“ word_to_find”字符串的帖子,以及带有上述字符串的剩余帖子数量,均在20个以内。

我希望这一切都有道理。下面是我当前的代码。

    def run_bot():
        sub = r.subreddit('nba')
        print("---Grabbing subreddit---\n")
        subs = sub.top('week', limit=20)
        print("---Grabbing posts in sub---\n")
        print("Looking for Kawhi Articles..\n")
        for posts in subs:
            article_url = posts.url
            post_title = posts.title
            word_to_find = "Kawhi"

            if word_to_find in post_title:
                print(post_title)



            else: 
                print("Can't find Kawhi articles in the 
                         subreddit!")

   run_bot()

1 个答案:

答案 0 :(得分:0)

以下代码假定您要遍历所有帖子,无论您是否发现在其.multiselect-container>li>a>label { padding: 4px 20px 3px 20px; } 中包含word_to_find的帖子。

post_title

仅当没有帖子具有def run_bot(): sub = r.subreddit('nba') print("---Grabbing subreddit---\n") subs = sub.top('week', limit=20) print("---Grabbing posts in sub---\n") print("Looking for Kawhi Articles..\n") not_in_any_post = True for posts in subs: article_url = posts.url post_title = posts.title word_to_find = "Kawhi" if word_to_find in post_title: print(post_title) not_in_any_post = False else: not_in_any_post = not_in_any_post and True if not_in_any_post: print("Can't find Kawhi articles in the subreddit!") run_bot() 时,not_in_any_post标志才会为True

如果要在发现没有word_to_find的标题后立即打印消息,则可以在{{1}中添加word_to_find语句时使用现有代码}块。但是,这意味着它不会遍历其余帖子。