R爬取安居客昆山二手房信息及分析-飞
发布时间: 2023-07-06
一、爬取数据

        如果直接从总页面按照页数从头到尾爬取,最多只显示50页,每一页60个房源,总共3000个,说明安居客并没有直接全部显示。于是按照区域逐个进行爬取,一共10个大区域,其中玉山的房源较多,又分了5个小区域,总共是14个细分区域。其中一个代码如下。

library(RCurl)

library(XML)

library(stringr)

myheader<-c("User-Agent"="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",

"Accept"=" application/json, text/javascript, */*; q=0.01",

"Accept-Language"=" zh-CN,zh;q=0.8",

"Connection"="keep-alive",

"Accept-Charset"="GB2312,utf-8;q=0.7,*;q=0.7"

)

page<-1:50                                                   

base<-"https://ks.anjuke.com/sale/shiqukunshan/p"

pageresults<-data.frame()

for (i in 1:length(page))  {

url<-paste(base,page,"/?from_price=101&to_price=120",sep='')

source<-getURL(url,httpheader=myheader,followlocation=TRUE,encoding="utf-8")

parse <- htmlParse(source)

#标题

a<-getNodeSet(parse,"//div[@class='house-title']/a/@title")

title<-iconv(a,"utf-8")

#面积

info<-sapply(getNodeSet(parse,"//div[@class='details-item']/span/text()"),xmlValue)

mianji<-str_subset(info,"m")

mianji<-str_sub(mianji,end=-3)

#楼层

louceng<-str_subset(info,"层")

#房型

fangxing<-str_subset(info,"[室]")

#时间

shijian<-str_sub(str_subset(info,"建造"),end=-4)

#小区+地段

b<-str_subset(info,"\n")

c<-str_trim(b)

c1<-lapply(strsplit(c,"\n"),function(x){x[1]})

xiaoqu<-str_trim(c1)

c2<-lapply(strsplit(c,"\n"),function(x){x[2]})

diduan<-str_trim(c2)

#价格

d<-getNodeSet(parse,"//span[@class='price-det']/strong/text()")

zongjia<-sapply(d,xmlValue)

e<-getNodeSet(parse,"//span[@class='unit-price']/text()")

e1<-sapply(e,xmlValue)

danjia<-str_sub(e1,end=-5)

#经纪人

jingjiren<-sapply(getNodeSet(parse,"//span[@class='brokername']/text()"),xmlValue)

#链接

f<-getNodeSet(parse,"//div[@class='house-title']/a/@href")

link<-iconv(f,"utf-8")

result<-data.frame(title,mianji,louceng,fangxing,shijian,xiaoqu,diduan,zongjia,danjia,jingjiren,link,stringsAsFactors=FALSE)

}

pageresults <-rbind(pageresults,result)

write.csv(pageresults,"1.csv")

其余区域整体代码相似,在base处将各区域url代入即可。

二、清洗数据

        全部爬完一共有33万的数据,导入Excel进行数据清洗,删除重复数据之后为3万3千条,字段内容检查后并没有缺失,在第一行添加字段名称,清洗后的数据如下所示。

三、分析数据

        二手房网站上的数据不一定是最终成交价格,因而信息仅供参考。一共是标题、面积、楼层、房型、时间、小区、地点、总价、单价、经纪人及链接共11个字段,以下选择部分字段进行分析。

        因300平方以上的房源较少,取了300以下的进行分析。最热门的面积位于81-100的区间,其次是121-140和101-120两个区间,但分别也只有第一的一半左右,可见小户型房源更受购房者欢迎。

        取60-200平方这个大区间来分析,末位数是0和5的房源数比较多,基本图中的峰值都对应着85,90,95之类的面积。例外的两个极值:89和143,查看房地产交易政策后发现这两个面积与90、144平米相比意味着更少的税费和首付,交易政策的影响显而易见。

        位于中层的房源占42%,其次是高层占24%,以及低层房源和别墅分别占17%。

        三室两厅占据房源总量近1/3,二至四室+两厅的房型占了70%,可见客饭厅分离的房型占据了绝大多数,社交需求以及追求更好的居住体验使得两厅甚至多厅成为一种趋势。

        1995年前的房源很少,而2010年的房源最多,2011年急剧下降。原因来自当年昆山的限购政策,2010年房价急剧上涨,2011年限购后交易量断崖式下跌,2012年市场回暖,同时今年正好是2012年后的第5年,满五年可以减税,房源数次之。2015年作为满2年减税的年份,同样房源数量可观。由于去年昆山再次限购以及新房税费高的问题,近两年的房源相较而言略少,政策的影响再次得到体现。

        玉山房源总数占了57%,这也是昆山的主城区,其中市区房源最多,剩余地区房源占比都不足10%。

        在售房源最多的10个小区全部位于玉山市区,市中心是购房最大的热门。

        总均价以121-140万和101-120万最多,扩大来看80-180万是购房的主力区间,占据了总数的半壁江山。

        总均价最高的10个小区都是别墅,8个位于城西,其余2个分别在城南和城东,均已经超过1000万,最高达到3000万,相比之下昆山的整体均价(217万)只是一个零头。

        单价均价的分布可以看到1-1.2万是二手房交易的主力单价,其次是1.2-1.4万以及0.8-1万。

        单价均价最高的10个小区基本都在昆山均价(15532)的2倍以上。其中除了四个是位于城西的别墅小区外,其余六个都是昆山最好的小学和初中:实小和二中的双学区房,学区房是房地产的第一支柱。

        高达62%的房源是精装修,也不排除部分经纪人为了引人关注而特意如此发布,实际并未达到要求。

        按区域来看,平均住宅面积前两位分别是淀山湖和巴城,平均单价最高的区域是城西,居住环境良好,楼盘较新,面积也不小,总均价在300万以上。


        对60到200平米的房源面积和总价建模,看到面积和总价有明显的线性关系,通过SPSS回归分析得到线性模型为Y=-12.722+1.515X,其中X为面积,Y为总价。


        通过SPSS二阶聚类模型对14个区域进行了分类,看到可以大致分成五类:

类型1单价最高,面积最小,年代最久远,对应着昆山市区的房源,老旧狭窄,学区因素

微信