关键词:
database 测试
思路:
在models中创建LiveRoom表,然后将前几天的爬虫数据存入数据库
过程:
- 创建LiveRoom模型
#models.py
from django.db import models
class LiveRoom(models.Model):
room_home = models.CharField(max_length=100)
room_id = models.IntegerField()
room_name = models.TextField()
user_id = models.IntegerField()
user_name = models.TextField()
room_kind = models.TextField()
room_url = models.TextField()
room_kind = models.CharField(max_length=20)
room_olnum = models.IntegerField()
room_usertag = models.TextField()
然后
python manage.py makemigrations
python manage.py migrate
- 爬虫数据存入数据库
将上一次的analysisPageJSON 修改一下
from hellodjango.models import LiveRoom
def analysisPageJSON(jsonContent):
a=LiveRoom.objects
for room in jsonContent['data']['rl']:
roomid = room['rid']
roomname = room['rn']
userid = room['uid']
username = room['nn']
url = room['url']
kind = room['c2name']
onlineNumber = room['ol']
userTag = room['od']
a.create(room_home = 'douyu',
room_id = roomid,
room_name = roomname,
user_id = userid,
user_name = username,
room_kind = kind,
room_url = roomUrl + url,
room_olnum = onlineNumber,
room_usertag = userTag)
def getFirstPageJSON(typeIndex):
firstPageUrl = url + str(typeIndex) + '/1'
jsonContent = getJSONFromUrl(firstPageUrl)
analysisPageJSON(jsonContent)
return jsonContent['data']['pgcnt']
getFirstPageJSON(1)
运行之后出现错误
image.png
Traceback (most recent call last):
File "D:\codes\python\mysite\hellodjango\tests.py", line 3, in <module>
from hellodjango.douyu import douyuJSONSpider
File "D:\codes\python\mysite\hellodjango\douyu\douyuJSONSpider.py", line 9, in <module>
from hellodjango.models import LiveRoom
File "D:\codes\python\mysite\hellodjango\models.py", line 4, in <module>
class LiveRoom(models.Model):
File "D:\software_dev\Python36\lib\site-packages\django\db\models\base.py", line 103, in __new__
app_config = apps.get_containing_app_config(module)
File "D:\software_dev\Python36\lib\site-packages\django\apps\registry.py", line 252, in get_containing_app_config
self.check_apps_ready()
File "D:\software_dev\Python36\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
查了一下,原来测试的时候django的环境并未启动,需要在使用models之前setup
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
#mysite.settings mysite是项目的名字
django.setup()
再运行就没有错误了
3 测试插入结果
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()
from hellodjango.models import LiveRoom
a = LiveRoom.objects.all()
print(a[0].room_name)
#输出结果:晚点恰鸡 10点11点抽6W