计算机毕业设计Django+Vue.js汽车数据可视化 Python汽车推荐系统 懂车帝汽车爬虫 汽车大数据 汽车数据分析 机器学习 深度学习 知识图谱 Hadoop Spark

python django django-simpleui scrapy mysql vue3 element-plus echarts vue-router pinia



1. scrapy爬虫抓取“懂车帝”网站的汽车及销量数据,还有“车质网”的汽车投诉数据
2. 条件选车模块,可根据关键词、品牌、价格、燃料类型、座位、车型等条件对车系进行筛选,同时可以按照总分、价格、舒适性、外观、配置、控制、动力、空间、内饰进行排序,该页面在滚动至底部时会自动翻页
3. 销量榜单模块,可对抓取到的近一年、近半年以及每个月的车系销量数据进行统计并展示排名
4. 差评榜单模块,可对抓取到的近一年、近半年以及每个月的车系问题投诉数据进行统计并展示排名,可以筛选三种不同的问题,分别是质量问题、服务问题、其他问题
5. 可视化分析模块,包括车系降价排行榜柱状图可视化(官方价减去经销商价格得到降差价)、汽车品牌数量TOP分布图(分析前30个品牌的车系数量的分布)、价格范围数量分布图(对分布在0-10万 10-15万 15-20万 20-25万 25-30万 30-40万 50万以上价格范围的车系数量进行分析)
6. 车系详情页面,展示了品牌、车系名、经销商报价、厂商报价、近一年销量排名、投诉量排名、评分雷达图分析面板(舒适性 外观 配置 控制 动力 空间 内饰 这6个维度,雷达图中间显示总分)、汽车数据面板展示(百公里加速时间 空调控制方式 行李箱容积 车身结构 整备质量 驱动形式 发动机描述 环保标准 综合油耗 燃料形式 燃油标号 变速箱描述 最高车速 油箱容积 座位数 座椅材料 车系排量 轴距)、
可以通过鼠标左键拖拽或键盘左右键360度查看车系外观图片、以标签形式展示了该车系所有的投诉问题(点击可查看问题详情)、用echarts的Timeline+Wordcloud展示了每个月的质量问题关键词、三种问题的每月投诉量走势图、每月车系销量走势图、每月销量排名走势图
7. 可在后台增删改查管理所有数据
8. 用户登陆注册

核心算法代码分享如下:

import requests
import parsel
import xlwt
import time
import csv
import pandas as pd
import numpy as np
#f = open("医院2.0.csv", "a", encoding='utf_8_sig',newline="")
name = ['医院名称','医院性质','医院等级','联系电话','联系地址','特色专科','日门诊量','床位数量','主要设备','医院网址','电子邮件','交通指南']

url = "https://www.yaofangwang.com/yiyuan/r0/"
cookie = "SECKEY_ABVK=mJFLIkqf/i6U7ccnrJ4ta/0319KCr4mqxKOoDBgVIHU%3D; BMAP_SECKEY=mJFLIkqf_i6U7ccnrJ4ta6dBg-5T_SmB5h8i6DcBazRIPU2aXXvKt45uwRiFk_pc_j4DDAVrcKgiQYnH1G92pW379t0gLZEV53zXzYf3b5lEQeAOn1yGHuCqvukFlecCVf7HP5KXQyU9QjmNcrwyrkw_nU7Ey5jiviZscbfu1yWtZdtkfiWpzh6KYVaBBmqF; HMF_CI=cb40c3bac11b81cc93aa05156b1a5b38bbf2cd9e29ad799c1db9abe90d6d58ac50; Hm_lvt_e5f454eb1aa8e839f8845470af4667eb=1655723303,1655789225; isContact=0; historysearch=%E4%B8%9C%E9%98%BF%E9%98%BF%E8%83%B6__%E4%BB%81%E5%92%8C__%E8%83%83%E8%8D%AF__; real_ip=183.190.120.157; hotkeywords=%E9%98%BF%E8%83%B6%23%231%23%231%23%2311442%40%40%E5%AE%89%E5%AE%AB%E7%89%9B%E9%BB%84%E4%B8%B8%23%230%23%231%23%2310799%40%40%E9%BE%9F%E9%BE%84%E9%9B%86%23%230%23%231%23%2325686%40%40%E6%8B%9C%E6%96%B0%E5%90%8C%23%230%23%231%23%2310189%40%40%E6%8B%9C%E5%94%90%E8%8B%B9%23%230%23%231%23%2314441; Hm_lpvt_e5f454eb1aa8e839f8845470af4667eb=1655807803"
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
    'Cookie':cookie
}


i=0  #行
l=0  # 列
title = {
    "医院名称":0,
    "医院性质":1,
    "医院等级":2,
    "联系电话":3,
    "联系地址":4,
    "特色专科":5,
    "日门诊量":6,
    "床位数量":7,
    "主要设备":8,
    "医院网址":9,
    "电子邮件":10,
    "交通指南":11
}




# 957
#n=957
#m=1
#n=20
m=600
n=700
for page in range(m,n+1):
    page = str(page)

    res = requests.get(url=url, headers=headers)
    res.encoding = res.apparent_encoding
    se = parsel.Selector(res.text)

    url04 = "https://www.yaofangwang.com/yiyuan/r0/p" + page + "/"
    ye = requests.get(url=url04, headers=headers)
    ye.encoding = ye.apparent_encoding
    ye_se = parsel.Selector(ye.text)

    tt = ye_se.xpath('//li[@class="clearfix"]')
    for txt in tt.extract():
        # time.sleep(3)
        se02 = parsel.Selector(txt)
        row=[]
        # 医院名称
        name = se02.xpath('//div[@class="info"]/strong/a/text()').extract()[0]
        row.append(name)
        sid = se02.xpath('//div[@class="info"]/strong/a/@href').extract()[0][8:14]

        url03 = "https://www.yaofangwang.com/yiyuan/" + sid + ".html"
        xq = requests.get(url=url03, headers=headers)
        xq.encoding = xq.apparent_encoding
        xq_se = parsel.Selector(xq.text)

        # 医院等级	联系电话	联系地址	特色专科
        canshu = xq_se.xpath('//div[@class="info"]/p')
        data = canshu.xpath('string(.)').extract()[0:5]
        for dat in data:
            dat_list = dat.split(":")
            if dat_list[0] in title:
                l = title[dat_list[0]]
                val = dat_list[1]
                val = val.replace(",", '')
                val = val.replace("'", '')
                val = val.replace('"', '')
                val = val.replace("\n", '')
                val = val.replace("\r", '')
                val=val.strip()
                row.append(val)

        # 日门诊量
        menzhen = canshu.xpath('string(.)').extract()[5]
        menzhen1 = menzhen.split("  ")
        menzhen2 = menzhen1[0]
        menzhen3 = menzhen2.split(":")
        val = menzhen3[1]
        row.append(val)
        # 床位数量
        cw = menzhen1[1]
        cw1 = cw.split(":")
        val = cw1[1]
        row.append(val)
        # 主要设备
        txxt = xq_se.xpath('//div[@class="tbock"]/div[@class="txt"]')
        shebei1 = txxt.xpath('string(.)').extract()[1]
        shebei2 = shebei1.replace(" ", "")[1:-1]
        shebei2 = shebei2.strip()
        row.append(shebei2)
        # 医院网址	电子邮件	交通指南
        data2 = txxt.xpath('string(.)').extract()[2]
        data2 = data2.replace(" ", "")[1:-1]
        datas2 = data2.split('\n')
        for dat in datas2:
            dat_list = dat.split(":")
            if dat_list[0] in title:
                l = title[dat_list[0]]
                val = dat_list[1]
                val = val.replace("'", '')
                val = val.replace(",", '')
                val = val.replace('"', '')
                val = val.replace("\n", '')
                val = val.replace("\r", '')
                val = val.strip()
                row.append(val)
        print(row)
        with open('data.csv', mode='a', newline='', encoding='utf-8') as data_file:
            data_writer = csv.writer(data_file)
            # 写入CSV文件
            data_writer.writerow(row)
        data_file.close()
        with open('specialized_in.csv', mode='a', newline='', encoding='utf-8') as ss_file:
            ss_writer = csv.writer(ss_file)
            # 写入CSV文件
            ss=row[5].split("、")
            for i in ss:
              print(i)
              ss_writer.writerow([i])
        ss_file.close()
        with open('equipment.csv', mode='a', newline='', encoding='utf-8') as es_file:
            es_writer = csv.writer(es_file)
            # 写入CSV文件
            es=row[8].split("、")
            for i in es:
                print(i)
                es_writer.writerow([i])
        es_file.close()
    print('第'+page+"页爬取完成!")


#f.close()
print('爬取成功!')

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B站计算机毕业设计大学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值