如何在Python中从JSON数据(含卫报API返回结果)提取指定元素?
提取Guardian API返回的webTitle字段
我来帮你搞定这个提取字段的问题!首先,咱们先把你的代码补全并优化一下,Guardian的API返回结构是嵌套的,webTitle藏在特定的层级里,咱们一步步来:
首先,确保你已经导入了需要的库:
import requests import json
然后,把你的请求代码调整得更清晰(记得把YOUR_ACTUAL_API_KEY替换成你自己的真实API密钥):
url = 'http://content.guardianapis.com/search?from-date=2016-01-02&to-date=2016-01-02&order-by=newest&show-fields=all&page-size=1&api-key=YOUR_ACTUAL_API_KEY' # 发起GET请求 response = requests.get(url)
接下来有个小技巧:requests库自带了json()方法,不用手动调用json.loads(),直接就能把响应转成Python字典:
# 将响应转为Python字典格式 data = response.json()
现在重点来了!Guardian API的返回结构里,所有搜索到的文章都在response -> results这个数组里,而每个文章对象里就包含你要的webTitle字段。因为你设置了page-size=1,所以这个数组里只有一篇文章,咱们可以这样提取:
方法一:遍历结果(适合多文章的情况)
# 获取文章列表 article_results = data['response']['results'] # 遍历每一篇文章(这里只有一篇) for article in article_results: title = article['webTitle'] print(f"提取到的文章标题:{title}")
方法二:直接取第一篇(适合page-size=1的情况)
article_results = data['response']['results'] # 先判断列表不为空,避免索引错误 if article_results: first_title = article_results[0]['webTitle'] print(first_title)
另外,建议你加上请求成功的判断,避免请求失败时出错:
if response.status_code == 200: data = response.json() # 这里放上面的提取逻辑 else: print(f"请求出错啦,状态码:{response.status_code}")
内容的提问来源于stack exchange,提问作者jainilvachhani
相关产品推荐
相关产品推荐

