前言
个人大数据的期末大作业,用python按城市寻找爬取、分析和保存了珍爱网相亲的征婚信息,然后进行数据可视化分析。
一、数据的爬取,分析,清洗与保存
1.数据的爬取
网站来源如下
def getDate(baseurl): datalist = [] citylist = ['beijing/' ,'shanghai/','tianjin/','changchun/','shijiazhuang/','lanzhou/','xining/', 'xian/','zhengzhou/','jinan/','taiyuan/','hefei/','changsha/','wuhan/','nanjing/','chengdu/','guiyang/','kunming/', 'hangzhou/','nanchang/','guangzhou/','fuzhou/' ] for i in citylist: url1 = baseurl + i for j in range(1,7): url = url1 + str(j) html = askURL(url)
2.数据的分析
1.数据的清洗
分析数据中用到了正则表达式查找筛选指定字符串。但因为珍爱网的每一栏都是采用相同的标签和class,这样就不知道是在哪里结束。所以正则表达式后面加上下一栏标签内的文字,就能分清在哪里结束了。 图1
因为相亲男女的其他各栏属性都相同,但其中有一栏男士对应的是月薪,女士对应的是学历。所以可以分开处理。男士的学历和女士的月薪就标记为“未知”。 图2
#详情链接 findLink = re.compile(r'') #图片的链接 findImgSrc = re.compile(r'居住地:') #居住地 findPlace = re.compile(r'居住地:(.*) 年龄:') #年龄 findAge = re.compile(r'年龄:(\d*) .*[月 薪:学 历:]') #月薪 findWage = re.compile(r'月 薪:(.*) 婚况:') #学历 findDip = re.compile(r'学 历:(.*) 婚况:') #婚况 findKuang = re.compile(r'婚况:(.*) 身 高:') #身高 findHeight = re.compile(r'身 高:(\d*) ') #信息 findDetails = re.compile(r'(.*?)',re.S)wage = re.findall(findWage, item) if len(wage) != 0: wage = wage[0] data.append(wage) else: data.append("未知") diploma = re.findall(findDip, item) if len(diploma) != 0: diploma = diploma[0] data.append(diploma) else: data.append("未知")2.数据的保存
使用SQLite将数据保存入数据库中,得到结果
def saveData(datalist,dbpath): init_db(dbpath) conn = sqlite3.connect(dbpath) cur = conn.cursor() for data in datalist: for index in range(len(data)): if index == 5 or index == 9: continue data[index] = '"'+data[index]+'"' sql = ''' insert into zhenaizhenghun ( info_link,pic_link,name,gender,place,age,wage,diploma,hun,height,details) values (%s)'''%",".join(data) print(sql) cur.execute(sql) conn.commit() cur.close() conn.close()二、数据可视化部分
1.前端框架
前端框架采用的是Start Bootstrap上面的模板,下载好想要的模板直接使用就可以了。
网址:Start Bootstrap
2.写入表格
将数据库的数据写入前端界面中的表格中,代码以及结果如下
序号 昵称 图片 性别 居住地 年龄 月薪 学历 婚况 身高 个人简介 {% for person in zhenai %} 序号 昵称 图片 性别 居住地 年龄 月薪 学历 婚况 身高 个人简介 {% endfor %} {{ person[0] }} { person[1] }}"> {{ person[3] }} { person[2] }}"> 查看图片 {{ person[4] }} {{ person[5] }} {{ person[6] }} {{ person[7] }} {{ person[8] }} {{ person[9] }} {{ person[10] }} {{ person[11] }} 3.echarts图表实现可视化
复制JS代码,在echarts官网选用合适的图表,将数据库的数据写入。实现可视化。
(1)婚姻状况的可视化代码以及结果
(2)学历分布的代码
(3)年龄分布的可视化代码以及结果
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章