基于flask+vue的租房信息可视化系统

基于flask+vue的租房信息可视化系统

一、介绍

本项目利用 python 网络爬虫抓取某租房网站的租房信息,完成数据清洗和结构化,存储到数据库中,搭建web系统对各个市区的租金、房源信息进行展示,根据各种条件对租金进行预测。

二、软件架构

python、flask、、requests、VUE、echarts

三、使用说明
1、数据概览

​ 将爬取到的数据进行展示,实时展示详细的房屋数据,支持根据市级筛选数据,点击详情按钮可跳转到原始网站房屋详情页面。

在这里插入图片描述

2、区域租金散点图

​ 城市不同区域租房房价分布散点图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OeA9EP5l-1660484297632)(./doc/img/002.jpg)]

3、标签词云

​ 分析各个房源的特色标签,用词云图进行展示。

4、租金分析

​ 通过城市、租赁方式、房屋朝向、面积范围对租金进行分析,得出各个租金范围内房屋比例。

在这里插入图片描述

5、房源数量

​ 分析每个城市区(县)的房源数量进行展示。

6、平均房租分析

​ 分许市内各个区(县)的平均房租价格进行展示。

在这里插入图片描述

7、租金预测

​ 通过城市、区(县)、租赁方式、面积范围等条件对租金进行预测。
在这里插入图片描述

8、数据爬取

​ 管理员选择爬取的城市名称(城市维护在一张表中,可以及添加或删除城市)和和爬取页数进行数据爬取。管理员选择爬取的城市名称(城市维护在一张表中,可以及添加或删除城市)和和爬取页数进行数据爬取。

在这里插入图片描述

9、爬取日志

​ 展示数据获取日志,管理员有此功能权限,普通用户则无
在这里插入图片描述

10、修改密码

​ 用户登录后可修改密码

在这里插入图片描述

11、登录注册

​ 用户登录注册
在这里插入图片描述
在这里插入图片描述

四、系统启动说明

1、启动Flask

启动app.py

2、启动vue

输入npm run serve ,访问系统(http://localhost:8099/)

五、部分代码展示

# 数据入库代码展示
    print("--> 数据爬取完毕,开始清除历史数据!")
    mysql = get_a_conn()
    sql = "delete from tbl_house t where t.city_code = '%s'" % (city)
    mysql.fetchall(sql)
    print("--> 清除历史数据完成!")

    print("--> 数据入库开始!")
    sql_cityname = "select city_name from tbl_city t where t.city_code = '%s'" % (city)
    res = mysql.fetchall(sql_cityname)
    city_name = res[0].get('city_name')

    for data in all_house_list :
        sqlInsrt = 'INSERT INTO tbl_house (city_name,city_code,rent_mode,orientation,rent,division,localtion,block,size,house_type,release_time,tags,link,create_time,create_user)  ' \
                   'VALUES ("%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s") ' \
                   % (city_name,city,data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9],data[10],createTime,username)
        mysql.fetchall(sqlInsrt)
    print("--> 数据入库完成!")
    
# 生成词云图片
def GetWordCloud():
    try:
        print('开始生成词云图')
        short_evals = ""
        mysql = get_a_conn()
        sql3 = "SELECT tags FROM tbl_house WHERE tags != ''"
        evals = mysql.fetchall(sql3)
        for item in evals:
            short_evals += item.get('tags')

        path_img = "../web/src/assets/imgs/cloud/cloud.png"
        background_image = np.array(Image.open(path_img))
        # Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
        cut_text = " ".join(jieba.cut(short_evals))

        wordcloud = WordCloud(
            # 设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
            font_path="C:/Windows/Fonts/simfang.ttf",
            background_color="white",
            min_font_size=8,
            # mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的
            mask=background_image).generate(cut_text)
        # 生成颜色值
        image_colors = ImageColorGenerator(background_image)
        # 下面代码表示显示图片
        plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation="bilinear")
        plt.axis("off")
        # plt.show()
        # 保存
        plt.savefig('../web/src/assets/imgs/cloud/fuliColoud.png')
        plt.close()

        print('成功生成词云图')
        return '1'
    except Exception as e:
        print('失败:')
        print(e)
        return '0'

六、特别说明

此系统爬虫脚本仅可用户学习交流,请爬取少量数据用于学习,切勿进行大批量数据操作
需要源码的小伙伴可联系我有偿获取

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值