我正在编写一个机器人,该机器人解析特定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()
答案 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()
请注意,此解决方案获取热门帖子,而不是热门帖子。您是热门帖子还是热门帖子,取决于您的特定应用程序。