如何在Python中使用Hacker News API?

0 python python-2.7 hacker-news-api

Hacker News 发布了一个 API,我如何在 Python 中使用它?

我想要获得所有热门帖子。我尝试使用urllib,但我认为我做得不对。

这是我的代码:

import urllib2
response = urllib2.urlopen('https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty')
html = response.read()
print response.read()
Run Code Online (Sandbox Code Playgroud)

它只是打印空

''
Run Code Online (Sandbox Code Playgroud)

我错过了一行,更新了我的代码。

avi*_*avi 5

正如@jonrsharpe 所解释的,read()这只是一次操作。因此,如果您打印html,您将获得所有 id 的列表。如果您浏览该列表,则必须再次发出每个请求才能获取每个 id 的故事。

首先,您必须将接收到的数据转换为 python 列表并遍历所有数据。

base_url =  'https://hacker-news.firebaseio.com/v0/item/{}.json?print=pretty'
top_story_ids = json.loads(html)
for story in top_story_ids:
    response = urllib2.urlopen(base_url.format(story))
    print response.read()
Run Code Online (Sandbox Code Playgroud)

除了所有这些,您还可以使用haxor,它是 Hacker News API 的 Python 包装器。以下代码将获取热门故事的所有 id:

from hackernews import HackerNews
hn = HackerNews()
top_story_ids = hn.top_stories()
# >>> top_story_ids
# [8432709, 8432616, 8433237, ...]
Run Code Online (Sandbox Code Playgroud)

然后您可以遍历该循环并打印所有它们,例如:

for story in top_story_ids:
   print hn.get_item(story)
Run Code Online (Sandbox Code Playgroud)

免责声明:我写的haxor