You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python食谱管理程序开发咨询:如何实现动态数据写入JSON文件

解决Python食谱管理程序的JSON自动写入问题

嘿,恭喜开启你的第一个Python项目!食谱管理程序这个想法真的很棒,用requests和BeautifulSoup做爬取部分完全没问题,至于JSON文件的自动写入,其实Python标准库自带的json模块就能完美搞定,不需要额外安装第三方库~

下面我结合你的场景,一步步给你讲怎么实现:

核心思路

要动态添加内容到JSON文件,通常的流程是:

  • 读取已有的JSON文件(如果文件不存在,就初始化一个空的食谱列表)
  • 将你爬取到的新食谱数据整理成Python字典格式
  • 把新字典追加到食谱列表中
  • 再将更新后的列表写回JSON文件

具体代码示例

假设你已经用requests和BeautifulSoup爬取到了食谱的标题、食材、步骤等信息,整理成了一个字典,那写入JSON的代码可以这么写:

import json
import requests
from bs4 import BeautifulSoup

def crawl_recipe(url):
    # 这里是你的爬取逻辑,示例返回一个食谱字典
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    # 模拟爬取到的数据,实际根据页面结构提取
    recipe = {
        "title": soup.find('h1').text.strip(),
        "ingredients": [item.text.strip() for item in soup.find_all('li', class_='ingredient')],
        "steps": [step.text.strip() for step in soup.find_all('div', class_='step')],
        "source_url": url
    }
    return recipe

def save_recipe_to_json(recipe, json_file='recipes.json'):
    try:
        # 读取现有JSON文件
        with open(json_file, 'r', encoding='utf-8') as f:
            recipes = json.load(f)
    except FileNotFoundError:
        # 如果文件不存在,初始化一个空列表
        recipes = []
    
    # 追加新食谱
    recipes.append(recipe)
    
    # 写回JSON文件,indent参数让格式更易读
    with open(json_file, 'w', encoding='utf-8') as f:
        json.dump(recipes, f, ensure_ascii=False, indent=4)

# 示例使用
target_url = "https://example.com/recipe/xxx"  # 替换成你要爬的URL
new_recipe = crawl_recipe(target_url)
save_recipe_to_json(new_recipe)

关键细节说明

  • ensure_ascii=False:如果你的食谱里有中文(比如食材名称),这个参数能避免中文被转成Unicode编码,保证JSON里的内容是正常可读的中文。
  • 异常处理:用try-except捕获FileNotFoundError,第一次运行时文件不存在也不会报错,自动创建新列表。
  • 数据结构一致性:确保每次爬取的recipe字典结构一致(比如都包含title、ingredients等键),这样JSON文件的格式才会统一,后续读取也不会出问题。

如果之后你需要读取这个JSON文件来展示食谱,同样用json.load()方法就能把JSON内容转回Python列表/字典,非常方便。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 09:12:30