有任何需要修正的地方请大家私信,评论。 大佬轻喷@…@
以下是小项目的需求:
*爬取百度地图,获取目标城市楼盘信息,
*包括目标楼盘的经纬度,名称,并保存在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或者xml | json或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_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资料的朋友点我
大家一起交流学习!!!