我正在编写一个通过特定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()
答案 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
语句时使用现有代码}块。但是,这意味着它不会遍历其余帖子。