2017年的世界第一房地产公司,账面流动资金3000多亿。如果有人说恒大4年后会出现倒闭风险,没人会信。从扩张到负债累累。
我关注这件事也有一年时间,期间产生了想了解恒大期房的全国分布图。因此进行了下面的探索。
注意:
1.以下楼盘为在售楼盘,并非全是期房,也有一部分已完工的楼盘以及旧城改造项目。以下简称:恒大在售楼盘;
2.数据来源于恒大官网的售楼信息,共计574个楼盘;
3.地理编码信息来自百度。
省级的楼盘数如下图所示,四川省居第一:
地级市的楼盘数如下表所示,成都居第二:
县级行政单位的楼盘数如下表所示,没四川的了:
(1)进入恒大的官网(https://www.evergrande.com/Business),发现在售楼盘信息。
(2)使用万能的F12键,抓取恒大的楼盘列表。
(3)观察,url的请求链接为:https://www.evergrande.com/Business/GetProjectList1/?nid=&page=2
其中,page=2为页数,使用浏览器单独获取楼盘列表:
(4)使用爬虫,将恒大的全部在售楼盘爬取出来:
#爬取网页脚本
def read_urls(START_PAGES_ID,END_PAGES_ID):
for i in range(START_PAGES_ID,END_PAGES_ID,1):
url=url1+str(i)
r = requests.get(url,headers=random.choice(header_list))
print(i.text)
with open(txt_path_list[ID], "a") as f:
f.write(r.text + "\n")
首先,从网站上扒下来的数据格式为:
标签的文字才是我们想要的内容。使用Notepad++,选择正则表达式查找对应位置,就可以获得恒大楼盘的名字:
# 提取标签中的内容
<p]*>([^<\/]+)<\/p>
下面就是获得的恒大在售楼盘的所有名字,共计
(1)从百度地图API获取楼盘的地理编码
# 引包
import json
from urllib.request import urlopen
from urllib.parse import quote
import requests
# 地理编码
def getlnglat():
for address in open("恒大楼盘名称的文件",encoding=‘utf-8‘): # 打开文件
address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
uri ="https://api.map.baidu.com/geocoding/v3/?address="+address+"&output=json&ak="+"百度的token"+"&callback=showLocation"
r = requests.get(uri, headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"})
with open("导出百度API的返回结果", "a") as lnglat:
lnglat.write(r.text + "\n")
(2)数据清洗
用万能的Notepad++,比1Pandas方便很多。下面是数据结果:
xls表格导入到arcgis里面制图,不作阐述:
使用arcgis的空间连接工具,统计每个省份、地级市、县的楼盘数量:
(1)使用到的工具有:chrome浏览器、Python、Notepad++、arcgis;
(2)因为恒大的楼盘信息没有反爬机制,能够很容易获取所有楼盘信息;
(3)使用notepad++进行数据清洗,非常高效;
(省略,专注于技术)
原文:https://www.cnblogs.com/QQ2281138561/p/15310702.html