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

Python食谱管理系统开发疑问:如何实现动态URL获取并自动写入JSON文件

嘿,很高兴看到你在做自己的第一个Python项目——食谱管理工具,这个想法超实用!关于你提到的自动写入JSON文件的需求,其实完全不用额外安装库,Python自带的json标准模块就能完美搞定,下面我给你详细讲怎么操作:

解决JSON文件写入/动态追加的方案

首先明确:Python标准库中的json模块就是你需要的工具,无需额外pip安装,直接导入就能用。

1. 基础写入:创建新的JSON文件

如果你的JSON文件还不存在,或者需要覆盖原有内容,可以用json.dump()方法。结合你爬取URL的场景,示例代码如下:

import requests
from bs4 import BeautifulSoup
import json

# 模拟爬取食谱URL的过程(替换成你实际的爬取逻辑)
def get_recipe_urls(keyword):
    url = f"https://目标食谱网站/search?q={keyword}"  # 替换成你要爬的网站地址
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    # 替换成目标网站实际的链接选择器
    recipe_urls = [a['href'] for a in soup.select('.recipe-card a')]  
    return recipe_urls

# 获取关键词对应的URL列表
new_urls = get_recipe_urls("中式炒菜")

# 将数据写入JSON文件
# 指定utf-8编码避免中文乱码,indent让格式更易读
with open('recipes.json', 'w', encoding='utf-8') as f:
    json.dump({"recipes": new_urls}, f, ensure_ascii=False, indent=4)

2. 动态追加:向已有JSON文件添加新URL

如果你需要保留原有数据,只新增爬取到的URL,就需要先读取原有文件内容,再合并数据,最后重新写入:

import json

def add_urls_to_json(new_urls):
    file_path = 'recipes.json'
    
    try:
        # 读取已有文件的内容
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)
    except FileNotFoundError:
        # 如果文件不存在,初始化一个空的食谱结构
        data = {"recipes": []}
    
    # 可选:去重,避免重复添加相同的URL
    existing_urls = set(data["recipes"])
    unique_new_urls = [url for url in new_urls if url not in existing_urls]
    
    # 追加新的URL到列表中
    data["recipes"].extend(unique_new_urls)
    
    # 将更新后的数据写回文件
    with open(file_path, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

# 调用示例:把新爬取的URL追加到已有文件
add_urls_to_json(new_urls)

关键注意事项

  • 编码问题:一定要指定encoding='utf-8',同时设置ensure_ascii=False,这样中文能正常显示,不会变成Unicode转义字符。
  • 数据结构:要确保写入JSON的是可序列化的Python对象(比如列表、字典、字符串、数字等),自定义类实例无法直接序列化。
  • 文件权限:确保你的程序有读写目标文件的权限,避免抛出PermissionError。

这样应该就解决你的问题啦,祝你第一个项目顺利完成!

内容的提问来源于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.28 06:38:55