2013-12-24 103 views
-1

链接页面内容:http://creepypasta.wikia.com/api.php?%20action=query&prop=revisions&titles=Main_Page&rvprop=content&indexpageids=1&format=jsonfm获得通过JSON

从JSON文件上面我想要得到的值“*”。我使用Python并有请求设置。通常,如果我不需要在获取页面内容之前获取页面ID,我可以这样做。但是,如果看不到,我会遇到一些麻烦,需要一点帮助。

+0

如果我理解你很好,这是不是真的对于MediaWiki。这就是“如何获得JSON的一些子树”。如果是这样,请删除混淆的MediaWiki标签。 – skalee

回答

0

该页面实际上并不是json - 它是html中json的表示形式。要请求json,请移除网址末尾的'fm'。

在这段代码中,我将使用urllib2和json包将json加载到字典中,然后访问* item。

url = "http://creepypasta.wikia.com/api.php?%20action=query&prop=revisions&titles=Main_Page&rvprop=content&indexpageids=1&format=json" 
j = json.load(urllib2.urlopen(url)) 
value = j['query']['pages']['22491']['revisions'][0]['*'] 

如果你不知道该看什么网页上,可以考虑该方法发现here(下面复制):

def _finditem(obj, key): 
    if key in obj: return obj[key] 
    for k, v in obj.items(): 
     if isinstance(v,dict): 
      item = _finditem(v, key) 
      if item is not None: 
       return item 

_finditem(j,'revisions')[0]['*'] 
+0

我添加了fm为用户提供了一个结构化的json视图。我的问题是,我不知道我试图获取内容的页面的ID。只是它的名字。 – cataclysmicpinkiepie

+0

我已经更新了我的答案来解决这个问题。请让我知道这可不可以帮你。 – nfazzio