恒大在售楼盘位置信息爬取与空间制图

编程 | 恒大在售小区(含期房)位置信息爬取与空间制图

0.背景

2017年的世界第一房地产公司,账面流动资金3000多亿。如果有人说恒大4年后会出现倒闭风险,没人会信。从扩张到负债累累。
恒大在售楼盘位置信息爬取与空间制图
我关注这件事也有一年时间,期间产生了想了解恒大期房的全国分布图。因此进行了下面的探索。

1.结果展示

注意:
1.以下楼盘为在售楼盘,并非全是期房,也有一部分已完工的楼盘以及旧城改造项目。以下简称:恒大在售楼盘;
2.数据来源于恒大官网的售楼信息,共计574个楼盘;
3.地理编码信息来自百度。

1.1地图展示

恒大在售楼盘位置信息爬取与空间制图

恒大在售楼盘位置信息爬取与空间制图

恒大在售楼盘位置信息爬取与空间制图

恒大在售楼盘位置信息爬取与空间制图

1.2排名展示

省级的楼盘数如下图所示,四川省居第一:
恒大在售楼盘位置信息爬取与空间制图

地级市的楼盘数如下表所示,成都居第二:
恒大在售楼盘位置信息爬取与空间制图

县级行政单位的楼盘数如下表所示,没四川的了:
恒大在售楼盘位置信息爬取与空间制图

2.研究方法

恒大在售楼盘位置信息爬取与空间制图

3.数据处理

3.1 爬取楼盘名

(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")

3.2 数据清洗

首先,从网站上扒下来的数据格式为:

恒大在售楼盘位置信息爬取与空间制图

标签的文字才是我们想要的内容。使用Notepad++,选择正则表达式查找对应位置,就可以获得恒大楼盘的名字:

# 提取标签中的内容
<p]*>([^<\/]+)<\/p>

下面就是获得的恒大在售楼盘的所有名字,共计
恒大在售楼盘位置信息爬取与空间制图

3.3 楼盘地理编码

(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方便很多。下面是数据结果:
恒大在售楼盘位置信息爬取与空间制图

3.4 楼盘位置制图

xls表格导入到arcgis里面制图,不作阐述:
恒大在售楼盘位置信息爬取与空间制图

3.5 分省、市、县总结

使用arcgis的空间连接工具,统计每个省份、地级市、县的楼盘数量:
恒大在售楼盘位置信息爬取与空间制图

3.总结

3.1 技术总结

(1)使用到的工具有:chrome浏览器、Python、Notepad++、arcgis;
(2)因为恒大的楼盘信息没有反爬机制,能够很容易获取所有楼盘信息;
(3)使用notepad++进行数据清洗,非常高效;

3.2 感想

(省略,专注于技术)

恒大在售楼盘位置信息爬取与空间制图

上一篇:聊一聊JavaScript和Java、C#的“箭头函数”(二)


下一篇:js函数形参和实参的区别