北京链家二手房数据分析
首先我们需要将链家二手房的数据抓取下来,用我们上课学的内容,很容易实现(bs4,re,urllib,搞定!):
import re
import csv
from bs4 import BeautifulSoup
from urllib import request
# 成功打开页面时返回页面对象,否则打印错误信息,退出程序
def get_bsobj(url):
## 获取 html 页面
headers = {"Accept-Language":"zh-CN,zh;q=0.9",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
req = request.Request(url,
headers=headers)
## 获取 html 页面
html = request.urlopen(req).read().decode()
bsobj = BeautifulSoup(html, "html5lib")
if bsobj:
return bsobj
else:
print("页面错误")
return None
# 将页面中每一条房屋信息保存为一个字典,将所有的字典保存在列表中,返回列表
def get_house_info_list(url):
house_info_list = []
bsobj = get_bsobj(url)
if not bsobj:
return None
house_list = bsobj.find_all("li", {"class":"clear"})
print(len(house_list))
for house in house_list:
try:
# 标题
title = house.find("div", {"class": "title"}).get_text()
#print(title)
# 获取信息数据(例:加怡名城 | 2室1厅 | 62.48平米 | 西 | 精装),通过“|”符号分割字符串
info = house.find("div", {"class": "houseInfo"}).get_text().split("/")
#print(info)
# 小区(例:加怡名城),strip()去除字符串两边的空格,encode,将字符串编码成 utf-8 格式
block = info[0].strip()
#print(block)
# 房型(例:2室一厅)
house_type = info[1].strip()
#print(house_type)
# 面积大小,保留整数(例:62.48平米,保留整数后为 62)
size_info = info[2].strip()
size = re.findall(r"\d+", size_info)[0]
#print(size)
# 价格,保留整数(例:120.3万,保留整数后为 120)
price_info = house.find("div", {"class": "totalPrice"}).span.get_text()
price = re.findall(r"\d+", price_info)[0]
#print(price)
# 添加到列表中
house_info_list.append({
"title": title,
"price": int(price),
"size": int(size),
"block": block,
"house_type": house_type
})
except IndexError:
pass
#print(house_info_list)
return house_info_list
# 读取前三个页面的房屋信息,将信息保存到 house.csv 文件中
def house(url):
house_info_list = []
# range(10),即前10个子页面 #这里只抓取前10个页面
for i in range(10):
new_url = url + 'pg' + str(i+1)
house_info_list.extend(get_house_info_list(new_url))
print(new_url)
if house_info_list:
# 将数据保存到 house.csv 文件中
with open("./house.csv", "w+") as f:
# writer 对象,修改默认分隔符为 "|"
writer = csv.writer(f, delimiter="|")
for house_info in house_info_list:
title = house_info.get("title")
price = house_info.get("price")
size = house_info.get("size")
block = house_info.get("block")
house_type = house_info.get("house_type")
# 写入一行
try:
writer.writerow([title, int(price), int(size), block, house_type])
print(block, price, size)
except:
continue
house("https://bj.lianjia.com/ershoufang/")
# 简单数据分析案例,太简单了,直接上代码:这里统计了房屋的面积,价格的平均值,标准差,并用直方图来显示结果
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 10 13:07:02 2018
@author: Jun
"""
import numpy
import matplotlib.pyplot as plt
# 读取 house.csv 文件中价格和面积列
price, size = numpy.loadtxt('house.csv', delimiter='|', usecols=(1, 2), unpack=True)
# 求价格和面积的平均值
price_mean = numpy.mean(price)
size_mean = numpy.mean(size)
print("平均价格为:(万元)", price_mean)
print("平均面积为:(平方米)", size_mean)
# 求价格和面积的方差
#price_var = numpy.var(price)
price_var = numpy.std(price)
#size_var = numpy.var(size)
size_var = numpy.std(size)
print("价格的标准差为:(万元)", price_var)
print("面积的标准差为:", size_var)
price, size = numpy.loadtxt('house.csv', delimiter='|', usecols=(1, 2), unpack=True)
plt.figure()
plt.subplot(211)
plt.title("/10000RMB")
plt.hist(price, bins=20)
plt.subplot(212)
plt.xlabel("/m**2")
plt.hist(size, bins=20)
# 运行结果截图
北京链家二手房数据分析相关推荐
- 爬取北京链家二手房数据
利用python爬取了北京链家主页的二手房数据,爬取时间为2020年1月8日.由于链家只显示了100页.每页30条,因此只能爬取3000条数据. 后续将爬取各区的小区名,对每个小区的在售二手房数据进行 ...
- 武汉链家二手房数据分析
爬取链家二手房武汉地区的成交数据,共23292条记录,利用Excel.MySQL.Power BI等工具对影响武汉二手房交易价格的因素进行了分析 分析思路 分析目的 武汉哪个区的二手房交易最多? 哪种 ...
- 数据抓取 | 数据分享 - 北京链家二手房成交数据抓取,保存格式为excel
该项目应客户需求,抓取 东城西城朝阳海淀二手房成交 数据 抓取字段为:房源id,房型,交易日期,位置,总价,朝向,装修情况,建筑年代,所在楼层,房屋年限,建筑面积,套内面积,电梯情况 -- 抓取流程: ...
- 爬取北京链家二手房(requests和selenium)
从网页源码中可以看出这是静态网页,可以直接从源代码里拿数据,先用requests,在用BeautifulSoup解析,最后通过查找获取数据 import requests from bs4 impor ...
- python分析链家二手房信息----数据分析实战(一)
链家二手房信息 # 导入需要的库:科学计算包numpy, pandas 可视化包matplotlib, seaborn 机器学习包 sklearn import numpy as np import ...
- Python 爬取链家二手房,我在北京买房的经历
本节所讲内容: 链家网站前期分析 利用requests爬取数据 爬取数据存储MongoDB(代码请看最后) 链家网站前期分析 今天我们主要对链家二手房数据爬取,看下我们目前的资金能买那一套.链家二手房 ...
- 链家全国房价数据分析 : 数据获取
最近一直在看论文,也有很久没有coding了,感觉对爬虫的技术有些生疏,我觉得即使现在手头没有在做这方面的东西,经常爬点对技术保鲜还是很重要的.所以这次我打算爬链家的房价数据,目的主要是对爬虫和Pyt ...
- PyQt5+Python+Excel链家二手房信息爬取、可视化以及数据存取
成果图: 第一步运行代码searsh.py,效果如下 第二步选择你所需要爬取数据的城市,如湖北-武汉 然后搜索,结果如下 如果你想爬取更多信息,只需要点击下一页即可 第三步,保存数据.可以将所显示的所 ...
- 简单的链家租房数据分析
链家租房数据分析 以北京链家租房数据为例进行以下数据分析 对"户型"."面积"和"价格"以及每平米价格等信息进行简要的统计分析,如每平米价格 ...
最新文章
- 转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js
- 从模板方法模式到JDBCTemplate
- 简单粗暴的“Debug模式”
- 【Linux 内核】线程调度示例一 ③ ( 获取线程优先级 | 设置线程调度策略 | 代码示例 )
- 小波变换 完美通俗讲解 之 二
- 【NLP-语义匹配】详解深度语义匹配模型DSSM
- 简单的C++程序题总结
- 深度学习(二十)——Ultra Deep Network, 图像超分辨率算法
- idea 代码第一次上传git_如何使用IDEA将项目代码首次上传至GitHub,并持续推送?...
- go一个简单的爬虫(豆瓣)
- 机器学习基本概念-有监督学习和无监督学习
- 免费:轻松实现在微信中直接下载APK
- iptables匹配statistic
- Python UTC
- 二维码图片如何快速生成
- type c 网卡 外接网卡 禁用后 不见 消失 找不到 的解决办法
- java技术路线思维导图_开题报告中的研究方法及技术路线指的啥?
- 人人旗下风车网产品经理的创业失败教训总结
- android动态扩容数组,ArrayList 扩容 Android Java 真的不一样
- 数据团队总监生存指南
热门文章
- 前端学习笔记01---HTML5、CSS3、移动端前端基础学习知识点合集
- CMA-ES算法解决连续优化问题
- Java创建对象方式初谈
- 如何全面的理解APS自动排产系统?
- 项目经理职业生涯的五道坎
- 求一元二次方程根(含虚根)
- opencv 全志_Banana Pi 开发板-【BPI-M2 Berry试用】论opencv3.3.0编译的那些坑(非成功版)-电路城论坛 - 电子工程师学习交流园地...
- LibVLC —— 本地音视频例子、Qt播放例子
- 路由配置url跳转传参_如何配置路由器以进行网络范围的URL记录
- 2017网易笔试矩阵快速幂