python多进程爬取上海房价并画出热力图分析

更新时间:2024-11-05 17:32:21 阅读: 评论:0


2023年5月27日发(作者:魔法师的学徒主题曲)

python多进程爬取上海房价并画出热⼒图分析

⼀、分析⽬的

1.探索上海市的房价区域分布

2.看看购房者都喜欢购买哪⾥的房⼦

⼆、数据采集

采集我爱我家上海区域的⼀万两千个⼩区的数据,采集的字段有⼩区、位置、最近30条成交套数、在售、在租、成交均价、成交总价、⼩区详细

介绍等数据。直接上代码:

import requests,codecs

import pymongo,time

from lxml import html

from multiprocessing import Pool

def get_content(j):

print('正在爬取第{},还剩{}'.format(j,561-j))

url='/xiaoqu/n{}/_?zn='.format(j)

r=(url)

r=ring()

lenth=len(('//ul[@class="pList"]/li'))

try:

for i in range(1,lenth):

urls=('//ul[@class="pList"]/li[{0}]/div[2]/h3/a/@href'.format(i))[0]

community=('//ul[@class="pList"]/li[{0}]/div[2]/h3/a/text()'.format(i))[0]

deal=('//ul[@class="pList"]/li[{0}]//div[2]/div[1]/p[1]/span[1]/a/text()'.format(i))[0]

onsale=('//ul[@class="pList"]/li[{0}]//div[2]/div[1]/p[1]/span[2]/a/text()'.format(i))[0].replace('r','').replace('n','').strip()

rent=('//ul[@class="pList"]/li[{0}]//div[2]/div[1]/p[1]/span[3]/a/text()'.format(i))[0].replace('r','').replace('n','').strip()

#addr=('//ul[@class="pList"]/li[{0}]/div[2]/div[1]/p[3]/text()'.format(i))[0].replace('r','').replace('n','').strip()

avgprice=('//ul[@class="pList"]/li[{0}]//div[2]/div[1]/div/p[1]/strong/text()'.format(i))[0]

totalprice=('//ul[@class="pList"]/li[{0}]//div[2]/div[1]/div/p[2]/text()'.format(i))[0]

output="{}t{}t{}t{}t{}t{}t{}n".format(community,deal,onsale,rent,avgprice,totalprice,urls)

savetoexcel(output)

except Exception as e:

print(e)

print('爬取失败')

def savetoexcel(output):

try:

f=('','a+','utf-8')

(output)

()

except Exception as e:

print('写⼊失败')

if __name__ == '__main__':

pool=Pool(processes=2)

(get_content,list(range(1,561)))

()

()

采集下来是这个样⼦的:

image

接着利⽤⾼德API把⼩区转换为经纬度坐标,这个代码就不贴了。转换之后变成这样:

image

三、数据可视化

利⽤百度地图API⽣成热⼒图。

* * *

</span><span style='font-size:10.803px;color:#cbcbcb;letter-spacing:0.01px;font-family:HiraginoSansGB-W3;'>热⼒图功能⽰例</span><span style='font-size:10.803px;color:#cbcbcb;letter-spacing:0.027px;font-family:imbusSanL-Regu;'>

* * *

把point⾥⾯的数据替换成⾃⼰的坐标,修改⼀下半径和最⼤值,保存到本地,修改成,放到容易到的位置,然后利⽤python搭载

简易的服务器,在cmd命令窗⼝,cd到对应⽂件夹,然后输⼊

python -m 80

就可以看到热⼒图了。来看看最近30天成交的房⼦都是哪⾥的:

image

可以看出最近成交的房⼦主要集中在黄浦江旁边,看来⼤家都⽐较喜欢靠近江边的房⼦,房⼦成交最多的是闵⾏莘庄⼀带(估计是房价稍微便宜

点)和浦东的外滩附近(估计是⾦融从业⼈⼠购买⼒⽐较强)。

接下来看看房价分布。本来想直接6000多个⼩区的经纬度导⼊,结果百度地图API⽆法⽣存热⼒图,汗,,试试999个,还是不⾏,我晕。。。

那就每个区域选择40个⼩区作为代表了,下⾯是sql语句

select a1.* from sheet1 a1

inner join

(select a.区域,a.均价 from sheet1 a left join sheet1 b

on a.区域=b.区域 and a.均价<=b.均价

group by a.区域,a.均价

having count(b.均价)<=60

)b1

on a1.区域=b1.区域 and a1.均价=b1.均价

order by a1.区域,a1.均价 desc;

替换坐标,改⼀下半径和最⼤值,来看看结果:

image

图中颜⾊深的房价表⽰10万以上每平,,看来还是长宁静安黄埔徐汇最贵了。毕竟是市中⼼啊。也就看看就好,买不起啊。。。。


本文发布于:2023-05-27 15:18:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/falv/fa/78/121608.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26