from django.shortcuts import render
from dataToSql.models import GoodsInfo, GoodsDetail
from rest_framework.response import Response
from rest_framework.decorators import api_view
import wordcloud
import jieba
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
import re
# Create your views here.
# 从数据库中读取数据, 返回json格式数据
@api_view(['GET'])
def sql_data(request):
# 从数据库中读取数据id前100条
goods_info = GoodsInfo.objects.filter(id__lte=100)
goods = []
# 分页
paginator_obj = Paginator(goods_info, 10)
page = request.GET.get('page')
goods_info = paginator_obj.get_page(page)
for i in goods_info:
item = {
'id': i.id,
'title': i.title,
'price': i.price,
'sale_sum': i.sale_sum,
'link': i.link,
'detail': i.detail,
'address': i.address,
'factory_name': i.factory_name,
}
goods.append(item)
# 将数据转换为json格式
return Response(goods)
@api_view(['GET'])
def get_data(request):
# 获取参数
param = request.GET
if param == None or len(param) > 1:
return Response('参数错误')
# 参数处理范围
val = 0
name = ''
# 读取参数
for i in param:
print(i, param[i])
if i == 'power':
power = param[i]
# 读取一定范围的额定功率
val = int(power)
name = 'rating_power'
elif i == 'input_rev':
input_rev = param[i]
# 读取一定范围的额定输入转速
val = int(input_rev)
name = 'input_rev'
infos = GoodsDetail.objects.all()
info_data = []
for i in infos:
if name == 'rating_power':
try:
rating_power = float(i.rating_power)
if rating_power >= (val-5) and rating_power <= (val+5):
good = GoodsInfo.objects.get(id=i.id)
item = {
"id": i.id,
"power_data": i.rating_power,
"input_rev": i.input_rev,
"output_rev": i.output_rev,
"slow_ratio": i.slow_ratio,
"sale_sum": good.sale_sum,
"price": good.price,
}
info_data.append(item)
except:
pass
# 对数据进行统计 {
# "power_data": {
# "0-5": 0,
# "5-10": 0,
# "10-15": 0,
# },
# ....
# }
count_data = {
"额定功率": {},
"输入转速": {},
"输出转速": {},
"减速比": {},
"价格": {},
}
for i in info_data:
power_data = i['power_data']
input_rev = i['input_rev']
output_rev = i['output_rev']
slow_ratio = i['slow_ratio']
sale_sum = i['sale_sum']
# 对额定功率进行统计
if power_data != None:
count_data['额定功率'][power_data] = count_data['额定功率'].get(power_data, 0) + 1
# 对输入转速进行统计
if input_rev != None:
count_data['输入转速'][input_rev] = count_data['输入转速'].get(input_rev, 0) + 1
# 对输出转速进行统计
if output_rev != None:
count_data['输出转速'][output_rev] = count_data['输出转速'].get(output_rev, 0) + 1
# 对减速比进行统计
if slow_ratio != None:
count_data['减速比'][slow_ratio] = count_data['减速比'].get(slow_ratio, 0) + 1
# 对价格进行统计
if sale_sum != None:
if sale_sum == '0':
sale_sum = '成交0+元'
count_data['价格'][sale_sum] = count_data['价格'].get(sale_sum, 0) + 1
return Response({
'data': info_data,
'count': count_data,
})
# 读取城市信息进行返回统计结果
@api_view(['GET'])
def address(request):
info = GoodsInfo.objects.all()
address_count = {}
for i in info:
# 对address属性进行分割提取,再进行统计
address = i.address.split(" ")
if len(address) < 2:
print(i.id, '地址信息不完整')
else:
city = address[1]
if city in address_count:
address_count[city] += 1
else:
address_count[city] = 1
return Response(data=address_count)
# 对数据字符串进行处理
def str_process(str):
flag = True
# 去除空格
num = str.replace(" ", "")
# 如果有-或者~或者/或者、,则取中间值
try:
if "-" in num:
num = num.split("-")
# 如果只有一个值,则取这个值
if num[0] == "":
num = float(num[1])
else:
num = (float(num[0]) + float(num[1])) / 2
elif "~" in num:
num = num.split("~")
num = (float(num[0]) + float(num[1])) / 2
elif "/" in num:
num = num.split("/")
if num[0] == "":
num = float(num[1])
num = (float(num[0]) + float(num[1])) / 2
elif "、" in num:
num = num.split("、")
num = (float(num[0]) + float(num[1])) / 2
# 如果有 > 或者 < 则取后面的值
elif ">" in num:
num = num.split(">")
num = float(num[1])
elif "<" in num:
num = num.split("<")
num = float(num[1])
# 转为int类型,失败就是有字母
num = int(num)
except:
flag = False
if flag :
return num
else:
return 0
# 读取商品详情信息(统计)
@api_view(['GET'])
def detail_count(request):
detail = GoodsDetail.objects.all()
detail_count = {
"圆柱齿轮减速机": 0,
"摆线针轮减速机": 0,
"圆锥齿轮减速机": 0,
"行星齿轮减速机": 0,
'其他类型': 0,
}
for i in detail:
data = i.wheel_type
if data != None:
if "圆" in data:
detail_count["圆柱齿轮减速机"] += 1
elif "针轮" in data:
detail_count["摆线针轮减速机"] += 1
elif "锥" in data:
detail_count["圆锥齿轮减速机"] += 1
elif "行星" in data:
detail_count["行星齿轮减速机"] += 1
elif "斜" in data:
detail_count["圆锥齿轮减速机"] += 1
else:
detail_count["其他类型"] += 1
else:
detail_count["其他类型"] += 1
data = [
{"name": "圆柱齿轮减速机", "value": detail_count["圆柱齿轮减速机"]},
{"name": "摆线针轮减速机", "value": detail_count["摆线针轮减速机"]},
{"name": "圆锥齿轮减速机", "value": detail_count["圆锥齿轮减速机"]},
{"name": "行星齿轮减速机", "value": detail_count["行星齿轮减速机"]},
{"name": "其他类型", "value": detail_count["其他类型"]},
]
length = len(detail)
# 将数据转换为json格式
return Response(data={"data": data, "length": length})
def template(request):
# 从数据库中读取数据
goods_info = GoodsInfo.objects.filter(id=1)
print(goods_info[0].title)
print(goods_info[0].price)
# 传递数据到模板
return render(request, 'sql_data.html')
# 返回词云图片
@api_view(['GET'])
def word_cloud(request):
# 读取数据库中所有的 use_scope 字段的数据
data = GoodsDetail.objects.values_list('use_scope')
# 读取数据
text = ""
for item in data:
if item[0] is not None:
# item[0]格式为 食品、纺织、冶金 或者 撕碎机,皮带机,矿山设备,电厂,水泥厂
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 Django框架基于Python爬虫的减速器数据系统设计后端源码+使用说明(毕业设计).zipDjango框架基于Python爬虫的减速器数据系统设计后端源码+使用说明(毕业设计).zipDjango框架基于Python爬虫的减速器数据系统设计后端源码+使用说明(毕业设计).zip 第一步:要安装django,这里使用的是django==2.1.5版本 ``` pip install django==2.1.5 ``` 第二步:启动项目 cd my_splider ``` python manage.py runserver 8000 ``` 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
Django框架基于Python爬虫的减速器数据系统设计后端源码+使用说明(毕业设计).zip (41个子文件)
.vscode
settings.json 166B
my_splider
db.sqlite3 0B
my_splider
__init__.py 0B
wsgi.py 397B
urls.py 1KB
settings.py 4KB
__pycache__
wsgi.cpython-38.pyc 599B
urls.cpython-38.pyc 1KB
settings.cpython-38.pyc 3KB
__init__.cpython-38.pyc 190B
static
1.png 390KB
spider_1688_1.db 1.42MB
备份
spider1688_4(3.27).db 5.77MB
dataToSql
__init__.py 0B
tests.py 60B
admin.py 169B
apps.py 93B
models.py 4KB
urls.py 579B
management
__init__.py 0B
commands
__init__.py 0B
make_num.py 602B
make_sql.py 9KB
__pycache__
make_sql.cpython-38.pyc 2KB
__init__.cpython-38.pyc 209B
__pycache__
__init__.cpython-38.pyc 200B
__pycache__
models.cpython-38.pyc 2KB
urls.cpython-38.pyc 644B
admin.cpython-38.pyc 341B
apps.cpython-38.pyc 415B
dataView.cpython-38.pyc 3KB
__init__.cpython-38.pyc 189B
views.cpython-38.pyc 9KB
dataView.py 5KB
views.py 18KB
templates
sql_data.html 444B
manage.py 542B
spider1688_4.db 5.77MB
upload
1.png 390KB
word_cloud.png 377KB
使用说明.md 255B
共 41 条
- 1
资源评论
onnx
- 粉丝: 9432
- 资源: 5594
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功