今天主要实现的是将小伙伴利用爬虫在网站上扒取的数据转化存入自己的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目录中的表目录中的对应表中可以查看模型对象的各个信息
通过上图可以看到针对特定对象的三个属性都计入在了库中