Django实战——复现网站(从爬虫到完善数据库)/Day1

今天主要实现的是将小伙伴利用爬虫在网站上扒取的数据转化存入自己的django项目的数据库(这里用的是sqlite数据库中) 

项目暂时的目录如上图所示,以便下面的程序解释(json模型文件、独立脚本用来解析json文件import_cds.py放在与manage.py同级的目录里)

模型文件models.py的设置

首先根据你想要收集的目标对象的数据,在应用music/models.py中添加这个模型的基本信息(配合json文件的内容一一对应)

建立CD类,分别有三个属性,分别为name、cover_image、info

#music/models.py
from django.db import models

class CD(models.Model):
    name = models.CharField(max_length=255)
    cover_image = models.URLField()
    info = models.TextField()


def _str_(self):
    return self.name

导入json文件,并且将内部数据导入sqlite数据库

进行这一步的操作主要就是编写一个独立的脚本import_cds.py来解析json文件中的模型信息,并且保存到数据库中,下面直接上代码

import json
import os
import django


os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ZeroDays.settings') # Django 项目设置
django.setup()

from music.models import CD  # 确保导入你模型的名称

def fetch_json_data(file_path):
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            return json.load(file)
    except Exception as e:
        print(f"Error reading JSON file: {e}")
        return None

def parse_json_data(json_data):
    if not isinstance(json_data, list):
        raise TypeError(f"Expected list but got {type(json_data).__name__}")
    albums = []
    for item in json_data:
        print(f"Processing item: {item}")  # 调试输出
        album = CD(
            name=item['name'],
            cover_image=item['cover_image'],
            info=item['info']
        )
        print(f"Created album: {album}")  # 调试输出
        albums.append(album)
    return albums

# 主函数
if __name__ == "__main__":
    file_path = 'cds.json'  # 本地 JSON 文件路径
    json_data = fetch_json_data(file_path)
    if json_data:
        albums = parse_json_data(json_data)
        CD.objects.bulk_create(albums)
        print("Data successfully added to the database!")

至此,等于建立了一个如同python manage.py的命令,我们拥有了python import_cds.py的命令,执行这条命令,将模型数据写入数据库

查看数据库中的数据信息

这里用的是pycharm专业版,可以直接查看db.sqlite的内容

选择项目的db.sqlite文件,导入之后在main目录中的表目录中的对应表中可以查看模型对象的各个信息

通过上图可以看到针对特定对象的三个属性都计入在了库中

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值