基于flask+vue的租房信息可视化系统
一、介绍
本项目利用 python 网络爬虫抓取某租房网站的租房信息,完成数据清洗和结构化,存储到数据库中,搭建web系统对各个市区的租金、房源信息进行展示,根据各种条件对租金进行预测。
二、软件架构
python、flask、、requests、VUE、echarts
三、使用说明
1、数据概览
? 将爬取到的数据进行展示,实时展示详细的房屋数据,支持根据市级筛选数据,点击详情按钮可跳转到原始网站房屋详情页面。
2、区域租金散点图
? 城市不同区域租房房价分布散点图。
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))
cut_text = " ".join(jieba.cut(short_evals))
wordcloud = WordCloud(
font_path="C:/Windows/Fonts/simfang.ttf",
background_color="white",
min_font_size=8,
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.savefig('../web/src/assets/imgs/cloud/fuliColoud.png')
plt.close()
print('成功生成词云图')
return '1'
except Exception as e:
print('失败:')
print(e)
return '0'
六、特别说明
此系统爬虫脚本仅可用户学习交流,请爬取少量数据用于学习,切勿进行大批量数据操作 需要源码的小伙伴可联系我有偿获取
|