爬取百度地图,获取城市楼盘信息_百度地图怎么返回到楼栋数据-程序员宅基地

技术标签: 爬虫  python  

有任何需要修正的地方请大家私信,评论。 大佬轻喷@…@
以下是小项目的需求:
*爬取百度地图,获取目标城市楼盘信息,
*包括目标楼盘的经纬度,名称,并保存在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’对应的值就是我们需要的信息,
需要进行提取
在这里插入图片描述

 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资料的朋友点我
大家一起交流学习!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44231758/article/details/110148993

智能推荐

将本地镜像上传到Docker hub_本地docker镜像上传dockhub-程序员宅基地

文章浏览阅读2.4k次。一、准备工作1.注册账号注册一个Docker Hub账号,管理自己的镜像(共享镜像)https://hub.docker.com2.新建一个仓库Docker hub上面创建仓库,仓库用于存放镜像,就像我们在Github Create Create Repository比如:仓库名称叫navigation-server,所以路径就是liyinchi/navigation-server了。注意:仓库名称只能小写3.查看容器IDdocker ps上传到Doc._本地docker镜像上传dockhub

elementUI动态切换校验规则且切换校验规则时清空上一次校验产生的警告文字_ele 切换后清除校验-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏8次。**this.$refs.transformerForm.clearValidate(['transformerLVSRateCapacity'])**清除切换校验时上一次校验留下的警告文字,<el-form :model="transfomerInfo" :rules="rules" ref="transformerForm" label-width="170px"> <el-form-item label="低压侧容量(MVA):" prop="transformer..._ele 切换后清除校验

vulhub靶场struts2漏洞复现_vulhub靶场有哪些漏洞-程序员宅基地

文章浏览阅读2k次。0x01、S2-001远程代码执行漏洞原理该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行影响版本Struts 2.0.0 - Struts 2.0.8poc执行任意命令%{#a=(new java.lan_vulhub靶场有哪些漏洞

linux之找出两个文件里面相同的数据_limux中a-b相同内容-程序员宅基地

文章浏览阅读1.7w次,点赞5次,收藏33次。1 问题找出2个文件里面重复的数据(这个问题是csdn排名第一的大神stpeace的专栏在微信里面和我的交流,我当时一脸懵逼)文件a.txt文件内容如下cat a.txt123123234345456文件b.txt文件内容如下cat b.txt234345456789789两个文件重复的数据如下234345456..._limux中a-b相同内容

matlab绘制不同线性的直方图,Matlab绘制柱状图采用不同图案填充-程序员宅基地

文章浏览阅读545次。说明:在调用applyhatch前,按照自己的需要对Matlab自动绘制的图片编辑。function applyhatch(h,patterns,colorlist)%APPLYHATCH Apply hatched patterns to a figure% APPLYHATCH(H,PATTERNS) creates a new figure from the figure Hby% repl..._matlab不等间隔直方图

centos mysql navicat_centos7 安装 navicat for mysql-阿里云开发者社区-程序员宅基地

文章浏览阅读373次。本人使用的版本是navicat_for_mysql_10.0.11_cn_linux,使用官网上下的11版本的无法打开注意解压目录不要放在中文目录下,会出现各种问题,本人就出现打开之后添加列名添加不上。(1).先安装wine环境yum install wine如果yum源中没有,可以使用下面这个源wgethttp://download.fedoraproject.org/pub/epel/6/i..._centos7安装navicate for mysql

随便推点

使用Laravel值得关注的扩展包_laracasts/testdummy-程序员宅基地

文章浏览阅读1w次。下面会介绍一些laravel中一些好用的扩展包,当然,其中有的也是php的扩展包,合理的使用能够大大的提示开发效率。_laracasts/testdummy

列表类型python_Python列表类型-程序员宅基地

文章浏览阅读234次。列表的开始和结束要加上中括号 采用逗号将列表的项与项分开 使用“=”号操作符将整个列表赋予一个变量列表中可以放置任意的数据类型,如果是字符串,需要打上引号2.列表索引:从0开始;可以倒着来数,最后一个的序号是-1。取列表中的值:print aList[1]、print aList[-2]、print aList[-1][0]片段切片:[a:b],表示从a开始(包括a)到b之..._python列表类型怎么写

oracle临时表教程,在oracle存储过程中创建临时表-程序员宅基地

文章浏览阅读2.2k次。在oracle的存储过程中,不能直接使用DDL语句,比如create、alter、drop、truncate等。那如果我们想在存储过程中建立一张临时表就只能使用动态sql语句了:create or replace procedure pro asstr_sql varchar2(100);begin-- 创建临时表str_sql := 'create global temporary table ..._oracle 存储过程 临时表

centos 7 ffmpeg 批量 转码 mp4 kvm ts shell 懒人系列 -7_kvmts-程序员宅基地

文章浏览阅读476次。特别注意:本人很懒就搞了些懒人办法1.建立个文本。shell.sh,复制下面代码保存。打开终端(建议直接root用戶运行)。2.sudo chmod +x sheell.sh3.sudo ./shell.sh 文件名.avi (扩展名可以任意) 使用方法4.这段代码 支持H264 h265 支持60针视频5.shell.sh 文件要和视频文件同一目录6.转换完的文件被保存在finish文件夹中#!/bin/bash##i-合并视频##-change(转换)##i用法i(_kvmts

SpringBoot整合Redis与Cache实现分页缓存-程序员宅基地

文章浏览阅读4.2k次。SpringBoot整合Redis与Cache实现分页缓存_分页缓存

【FAQ】tomcat启动jdk版本不一致-程序员宅基地

文章浏览阅读192次。一、tomcat7.exe与startup.bat的区别:1、这两个都可以启动tomcat,但tomcat7.exe必须安装了服务才能启动,而startup.bat不需要2、另外一个区别是它们启动所使用的JAVA环境配置是分开的tomcat7.exe启动所使用JAVA配置与服务启动所使用的JAVA配置一样,都是通过tomcat7w.exe的JAVA面板配置(可以在创建服务前修..._龙蜥操作系统tomcat启动的java和java版本不一样

推荐文章

热门文章

相关标签