赞
踩
当今社会,随着社会的发展,房价问题已成了一个普遍的问题,而房地产市场的供给和需求的高度层次性和差别性由于人口、环境、文化、教育、经济等因素的影响,房地产市场在各个区域间的需求情况各不相同,从而造就了房价高低不同,房价问题已成了一个普遍的问题,而房地产市场的供给和需求的高度层次性和差别性由于人口、环境、文化、教育、经济等因素的影响,房地产市场在各个区域间的需求情况各不相同,从而造就了房价。随着国家经济的高速发展,房价问题已经成为经济发展中的突出问题,同时也是民众最关心的民生问题.近年来,中国各地房价都在大幅上涨。如今南宁房价居高不跌,使打工人望尘莫及,因此,想对南宁房价加以分析与研究,找出低房价区域。
此次项目任务是针对想在南宁买房自住或者房地产投资的客户,对南宁房价进行分析,分析的开始则是在网上爬取数据,并对数据进行可视化分析。当中所需要的技术是python的scrapy爬虫框架,以及matplotlib、pyecharts包。爬取数据后,对南宁二手房进行分析,让买方清楚南宁二手房状况,理解价格,尝试找出南宁房价规律,对选择二手房能防止被骗。也可以使卖方清楚自己房子的定位价格,并对数据建立预测模型,根据假想条件,预测出房价。
此次获取数据采用的是scrapy爬虫框架,爬取的网址是链家网,地址选择的是南宁市。我爬出了6570条数据,链家的爬虫机制是爬取的条数是有限的,而我采取的反反爬虫对策是根据南宁市的每个区域分别爬取,这样就可以对全站爬出数据,不再受到限制。代码如下:
import scrapy
from ..items import LianjiaItem
class LjSpider(scrapy.Spider):
name = 'lj'
allowed_domains = ['lianjia.com'] #域名范围!!!
start_urls = ['http://nn.lianjia.com/ershoufang/']
start_urls = []
locations = ['xixiangtangqu', 'qingxiuqu', 'jiangnanqu', 'xingningqu','liangqingqu','yongningqu'] # 城区
for loc in locations:
for page in range(1, 40):
url = "http://nn.lianjia.com/ershoufang/{}/pg{}/".format(loc, page)
start_urls.append(url)
def parse(self,response):
urls = response.xpath('//div[@class="info clear"]/div[@class="title"]/a/@href').extract() #获取每个二手房连接
for url in urls: #逐条遍历出来
print(url)
yield scrapy.Request(url,callback=self.parse_lj)
def parse_lj(self,response):
item = LianjiaItem()
try:
item['ttprice'] = response.xpath('concat(.//span[@class="total"]/text(),.//span[@class="unit"]/span/text())').getall() #房子价格
except:
item['ttprice']=""
try:
item['price'] =response.xpath('.//span[@class="unitPriceValue"]/text()').getall() #元/平米
except:
item['price']=""
try:
item['place'] = response.xpath('.//div[@class="areaName"]//span/a[1]/text()').getall() #所在区域
except:
item['place']=""
try:
item['street'] = response.xpath('/html/body/div[5]/div[2]/div[4]/div[2]/span[2]/a[2]/text()').getall() #所在街道
except:
item['street']=""
base1 = response.xpath('//div[@class="base"]//ul')
ift=response.xpath('//div[@class="baseattribute clear"]/div[@class="name"]//text()').getall()
try:
item['huxing'] = base1.xpath('./li[1]/text()').getall() #房屋户型
except:
item['huxing']=""
try:
item['floor'] = base1.xpath('./li[2]/text()').getall() #所在楼层
except:
item['floor']=""
try:
item['area'] = base1.xpath('./li[3]/text()').getall() #建筑面积
except:
item['area']=""
try:
item['jiegou'] = base1.xpath('./li[4]/text()').getall() #户型结构
except:
item['jiegou']=""
try:
item['btype'] = base1.xpath('./li[6]/text()').getall() #建筑类型
except:
item['btype']=""
try:
item['chaoxiang'] = base1.xpath('./li[7]/text()').getall() #房屋朝向
except:
item['chaoxiang']=""
try:
item['build'] = base1.xpath('./li[9]/text()').getall() #装修情况
except:
item['build']=""
try:
item['tihu'] = base1.xpath('./li[10]/text()').getall() #梯户比例
except:
item['tihu']=""
try:
item['lift'] = base1.xpath('./li[11]/text()').getall() #配套电梯
except:
item['lift'] =""
try:
item['sub'] = ift[3] #交通便利
except:
item['sub'] = ""
try:
item['diya'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[7]/span[2]/text()').getall() #是否抵押
except:
item['diya'] =""
try:
item['name'] = base1.xpath('/html/body/div[5]/div[2]/div[4]/div[1]/a[1]/text()').getall() #小区名称
except:
item['name'] =""
try:
item['time'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[1]/span[2]/text()').getall() #挂牌时间
except:
item['time'] =""
try:
item['quanshu'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[6]/span[2]/text()').getall() #产权权属
except:
item['quanshu'] =""
try:
item['yongtu'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[4]/span[2]/text()').getall() #房屋用途
except:
item['yongtu'] =""
yield item
得出的数据字段:
得到数据后,对空值的剔除,修改格式,对价格单位的剔除方便后面分析
处理数据前:
获取数据后,使用pandas库,经过去重,排除空值,拆分
处理数据后:
图2-2
我把房间数目厅数都单独做出一列,楼层也是如此,其中‘rn’代表房间数,‘hall’代表厅数,’washroom’代表卫生间数,‘floor_1’代表楼层,‘floor’代表楼楼高。
1.在完成项目过程中,全程由python实现,这也使我的代码能力有所提高,对数据处理能力更加了,scrapy的爬虫框架理解得更加深刻。
2.不足:是对数据理解层面不够,未能做到更清晰的分析,在之后会翻阅更多的资料来完善自己。
3.数据选取字段不充足,未能加上经纬度,由于2020年土地划分等级网上未能找出,所以未能加上地段等级,虽有2010年的地段划分,可是得出拟合结果一般,所以我为选择加上。
4.在南宁,平均房价都保持在一万出头价格,而且在良庆区和青秀区价格会更贵,在售的二手房也多。房间的厅数也会影响房子的平均价格,相反房间数存在影响不及厅数的大。
5.在买房过程中,如果我们有二次出售的想法,应参照上图选择房子所在地,建筑结构。建筑结构选择钢混结构会更好。在选择房源投资的话应注意
6.尽量选择青秀区和良庆区之间,因为房价高与在售房多透露出南宁未来的发展趋势所在地,对将来的房价升涨与否存在影响。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。