爬取百度地图,获取城市楼盘信息

有任何需要修正的地方请大家私信,评论。 大佬轻喷@…@
以下是小项目的需求:
*爬取百度地图,获取目标城市楼盘信息,
*包括目标楼盘的经纬度,名称,并保存在excel文档中。


大家稍微等下,<这是一个群>,一群热爱python的小白的欢乐地带,里面有很多学习python的资料,群文件自取哈!!!

下面进入正题!

一、百度地图开发文档的获取

1、你需要一个百度账号,并且完成开发者认证.

2、点击这里,快速进入注册认证.

3、开发文档 ->web服务API ->地点检索

4、copy我们需要访问的url.(先去掉’?‘后面的参数)

http://api.map.baidu.com/place/v2/search

二、代码编写

写上目标url,请求头,我们需要的包

import requests
import xlwt
url = 'http://api.map.baidu.com/place/v2/search'
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
    }

分析一下文档中提供的一些参数,只取我们需要的,有其他需求的朋友,可以自行查看。

参数名参数含义示例
query检索关键字。行政区划区域检索不支持多关键字检索。如果需要按POI分类进行检索,请将分类通过query参数进行设置,如query=美食天安门、美食
tag检索分类偏好,与q组合进行检索,多个分类以","分隔(POI分类),如果需要严格按分类检索,请通过query参数设置美食
region检索行政区划区域(增加区域内数据召回权重,如需严格限制召回数据在区域内,请搭配使用city_limit参数),可输入行政区划名或对应cityCode北京、131(北京的code)、海淀区、全国,等
ak开发者的访问密钥,必填项。v2之前该属性为key。
output输出格式为json或者xmljson或xml
page_size单次召回POI数量,默认为10条记录,最大返回20条。多关键字检索时,返回的记录数为关键字个数*page_size。10
page_num分页页码,默认为0,0代表第一页,1代表第二页,以此类推。常与page_size搭配使用,仅当返回结果为poi时可以翻页。0、1、2
# 以我所在的城市为例
# city_name = str(input('请输入需要查询的城市:')) --可以自定义输入
page_num = int(input('请输入你要查询到多少页:'))
for i in range(num):
    params = {
           'query':'住宅区',
           'tag':'写字楼,住宅区,宿舍,内部楼栋,小区,楼',
           'region':'贵阳',
           'output':'json',
           'ak':'hssX8VzSyk3tbzfhQgzzwPBBAOhev5bU',
           'page_size': 20,
           'page_num':i,
       }
	page_text = requests.get(url=url,headers=headers,params=params).json()
print(page_text)

然后分析我们获取到的数据, 发现我’results’对应的值就是我们需要的信息,
需要进行提取
在这里插入图片描述

 results_list = page_text['results']
 # print(type(results_list))
 
 # 遍历列表result_list,获取到每一个列表元素
 for j in range(0, len(results_list)):
      lst1 = list(results_list[j].values())

获取到我们需要的信息:
在这里插入图片描述

写入到excel文档中

def set_style(height,bold=False):
    #初始化样式
    style = xlwt.XFStyle()
    # 为样式创建字体
    font = xlwt.Font()
    #字体类型
    font.name = 'Times New Roman'
    #字体加粗
    font.bold = bold
    #字体颜色
    font.color_index = 4
    #字体大小
    font.height = height
    #定义格式
    style.font = font
    return style
 f = xlwt.Workbook(encoding='utf-8')  # 创建工作簿
 # 创建工作表sheet,并指定可以重复写入数据的情况,并设置行高
 sheet1 = f.add_sheet(u'colour', cell_overwrite_ok=False)
 # 控制行的位置
 colum = 0
 row = 0
 # 设置第一行
 lst = ['name', 'lat', 'lng', 'address', 'uid']
 for m in range(0, len(lst)):
     sheet1.write(0, m, lst[m], set_style(220, True))

分别提取我们需要的信息放进文档中,特别注意,坐标信息是在字典中

for j in range(0, len(results_list))
    # 获取字典的values值
    lst1 = list(results_list[j].values()
    
    # 写第一列
    sheet1.write(j + 1, 0, lst1[0])

    # 写第二列和第三列
    lst2 = list(lst1[1].values())
    sheet1.write(j + 1, 1, lst2[0])
    sheet1.write(j + 1, 2, lst2[1])

    # 写入第四列
    sheet1.write(j + 1, 3, lst1[2])![在这里插入图片描述](https://img-blog.csdnimg.cn/20201126230933167.gif#pic_center)

# 保存excel文件
f.save('test.xls')

在这里插入图片描述

就是这样了,那里写不好,跟我说下,我改

另外有需要python资料的朋友点我
大家一起交流学习!!!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页