You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python从News API返回的JSON数据中提取特定元素及指定来源文章的标题与描述

问题与解决方案:从JSON/News API筛选特定来源内容

1. 基础技术问题:如何从JSON文件中获取特定元素?

要从JSON文件中获取特定元素,核心是先把JSON内容转换成Python可操作的字典或列表,再通过键路径或索引访问:

  • 读取本地JSON文件
    先用json.load()读取文件内容,转为Python对象后,根据JSON结构(字典或列表)访问目标元素:
    import json
    
    # 打开并读取JSON文件
    with open('your_file.json', 'r', encoding='utf-8') as file:
        json_data = json.load(file)
    
    # 示例:如果JSON是包含文章的列表,取第一篇的来源名称
    if isinstance(json_data, list):
        source_name = json_data[0]["source"]["name"]
    # 示例:如果JSON是带articles键的字典,取第一篇的来源名称
    elif "articles" in json_data:
        source_name = json_data["articles"][0]["source"]["name"]
    
  • 处理API返回的JSON
    调用API后,直接用response.json()将响应转为Python对象,之后的访问方式和本地文件一致。

2. 具体业务场景:筛选News API中来源为"Ixbt.com"的文章

你的代码只是打印了所有文章的来源名称,没有完成筛选和提取标题、描述的需求。我们可以通过带条件的列表推导式来实现:

假设你已经通过Python请求获取到了包含articles列表的data对象,正确代码如下:

# 筛选来源为"Ixbt.com"的文章,同时提取标题和描述
target_articles = [
    {
        "title": article["title"],
        "description": article["description"]
    }
    for article in data["articles"]
    # 用get()方法安全获取来源名称,避免键不存在抛出异常
    if article["source"].get("name") == "Ixbt.com"
]

# 遍历打印结果
for article in target_articles:
    print(f"标题:{article['title']}")
    print(f"描述:{article['description']}\n")

代码逻辑说明

  • 遍历data["articles"]中的每一篇文章
  • 通过article["source"].get("name")安全获取来源名称(即使sourcename不存在,也只会返回None而不会报错)
  • 仅保留来源名称等于"Ixbt.com"的文章,并提取其titledescription存入字典
  • 最终得到的target_articles就是符合要求的结果列表

如果需要处理标题或描述为null的情况,可以用get()设置默认值,避免打印None

target_articles = [
    {
        "title": article.get("title", "无标题"),
        "description": article.get("description", "无描述")
    }
    for article in data["articles"]
    if article["source"].get("name") == "Ixbt.com"
]

内容的提问来源于stack exchange,提问作者Laura

火山引擎 最新活动