链接页面内容:http://creepypasta.wikia.com/api.php?%20action=query&prop=revisions&titles=Main_Page&rvprop=content&indexpageids=1&format=jsonfm获得通过JSON
从JSON文件上面我想要得到的值“*”。我使用Python并有请求设置。通常,如果我不需要在获取页面内容之前获取页面ID,我可以这样做。但是,如果看不到,我会遇到一些麻烦,需要一点帮助。
链接页面内容:http://creepypasta.wikia.com/api.php?%20action=query&prop=revisions&titles=Main_Page&rvprop=content&indexpageids=1&format=jsonfm获得通过JSON
从JSON文件上面我想要得到的值“*”。我使用Python并有请求设置。通常,如果我不需要在获取页面内容之前获取页面ID,我可以这样做。但是,如果看不到,我会遇到一些麻烦,需要一点帮助。
该页面实际上并不是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]['*']
我添加了fm为用户提供了一个结构化的json视图。我的问题是,我不知道我试图获取内容的页面的ID。只是它的名字。 – cataclysmicpinkiepie
我已经更新了我的答案来解决这个问题。请让我知道这可不可以帮你。 – nfazzio
如果我理解你很好,这是不是真的对于MediaWiki。这就是“如何获得JSON的一些子树”。如果是这样,请删除混淆的MediaWiki标签。 – skalee