百度地图 小区边界爬取

  1. 完整项目地址-github
  2. 数据源:百度地图api
  3. 项目结构
   RESIDENTIALAREABOUNDARY│  ResidentialAreaBoundaryControl.py 主函数│  ResidentialAreaBoundaryFunc.py 方法库│  ├─Auxiliary│     crawelFunc.py 辅助函数└─dataczfjsj.csv 样例-小区数据czfjsj_boundary.csv 样例-小区边界爬取结果,可导入arcgis生成shp数据
  1. 主函数需要参数:

    • orgin_csv_path:小区数据csv(参考 czfjsj.csv,仅需小区名称和位置即可)
    • output_path:输出目录
  • output_path:输出目录
  • bd_ak:百度地图ak列表,建议数据量大多添加几个ak,防止配额用完,该版本并未添加配额监测、负载均衡、断点续存等功能

ResidentialAreaBoundaryFunc.py

# -*- coding:utf-8 -*-
# author:XuCQ
# file:ResidentialAreaBoundary-ResidentialAreaBoundaryFunc
# datetime:2020/2/15 14:31
# software: PyCharm
import requests
from requests.adapters import HTTPAdapter
import jsondef get_residential_uid(residential_name, region, bmap_key):bmap_localserach_url = f'http://api.map.baidu.com/place/v2/search?query={residential_name}&region={region}&output=json&city_limit=true&ak={bmap_key}'s = requests.Session()s.mount('http://', HTTPAdapter(max_retries=3))s.mount('https://', HTTPAdapter(max_retries=3))data = s.get(bmap_localserach_url, timeout=5, headers={"Connection": "close"})  # , proxies=proxiesdata = data.textdata = json.loads(data)if data['status'] == 0 and len(data['results']) > 0:try:for info in data['results']:if '-' not in info['name']:return info['uid']return Noneexcept Exception as e:print(f'Error\t{bmap_localserach_url}')return Noneelse:return Nonedef get_boundary_by_uid(uid):'''根据uid获得边界:param uid: 百度地图 目标uid:return: None:无geo信息 else geos.join(;)'''bmap_boundary_url = f'http://map.baidu.com/?reqflag=pcmap&from=webmap&qt=ext&uid={uid}&ext_ver=new&l=18's = requests.Session()s.mount('http://', HTTPAdapter(max_retries=3))  # mount:将一个连接适配器注册到一个前缀上s.mount('https://', HTTPAdapter(max_retries=3))  # HTTPAdapter:通过实现传输适配器接口,为 session 和 HTTP、 HTTPS连接提供了一个通用的接口data = s.get(url=bmap_boundary_url, timeout=5, headers={"Connection": "close"})data = data.textdata = json.loads(data)content = data['content']# print(data)if not 'geo' in content:return Nonetry:geo = content['geo']i = 0strsss = ''for jj in str(geo).split('|')[2].split('-')[1].split(','):jj = str(jj).strip(';')if i % 2 == 0:strsss = strsss + str(jj) + ','else:strsss = strsss + str(jj) + ';'i = i + 1return strsss.strip(";")except Exception as e:print(f'Error\t{bmap_boundary_url}')return Nonedef transform_coordinate_batch(coordinates, bmap_key):req_url = 'http://api.map.baidu.com/geoconv/v1/?coords=' + coordinates + '&from=6&to=5&ak=' + bmap_keys = requests.Session()s.mount('http://', HTTPAdapter(max_retries=3))s.mount('https://', HTTPAdapter(max_retries=3))data = s.get(req_url, timeout=5, headers={"Connection": "close"})  # , proxies=proxiesdata = data.textdata = json.loads(data)coords = ''if data['status'] == 0:try:result = data['result']if len(result) > 0:for res in result:lng = res['x']lat = res['y']coords = coords + ";" + str(lng) + "," + str(lat)return coords.strip(";")except Exception as e:print(f'Error\t{req_url}')return Noneelse:return None

ResidentialAreaBoundaryControl.py 主函数

# -*- coding:utf-8 -*-
# author:XuCQ
# file:ResidentialAreaBoundary-ResidentialAreaBoundaryControl
# datetime:2020/2/15 12:16
# software: PyCharm
import os
from random import choice
from Auxiliary.crawelFunc import loadCSV, save_info
from ResidentialAreaBoundaryFunc import *bd_ak = ['your keys']def crawel_residential_area_boundary(orgin_csv_path, output_path):judge = Trueorgin_df = loadCSV(orgin_csv_path)output_path=os.path.join(output_path,f"{os.path.basename(orgin_csv_path).split('.')[0]}_boundary.csv")for index, residential_info in orgin_df.iterrows():residential_name = residential_info[0]residential_region = f'江苏省常州市{residential_info[1]}'residential_uid = get_residential_uid(residential_name, residential_region, choice(bd_ak))if residential_uid != None:coord_bd09mc_list = get_boundary_by_uid(residential_uid)if coord_bd09mc_list != None:coord_bd09_list = transform_coordinate_batch(coord_bd09mc_list, choice(bd_ak))if coord_bd09_list != None:for idx, coord in enumerate(coord_bd09_list.split(';')):save_info({'residential_name': residential_name,'residential_region': residential_region,'coord_x': coord.split(',')[0],'coord_y': coord.split(',')[1],'point_id': idx}, output_path, judge)if judge:judge = Falseprint(f'{residential_name}  Area Boundary Save Success\t {index}/{orgin_df.shape[0]}')if __name__ == '__main__':crawel_residential_area_boundary('data/czfjsj.csv','data')

百度地图小区边界爬取相关推荐

  1. 百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。

    1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0 ...

  2. python 接入百度地图数据包下载_Python爬虫-利用百度地图API接口爬取数据并保存至MySQL数据库...

    首先,我这里有一份相关城市以及该城市的公园数量的txt文件: 分析-02.png 其次,利用百度地图API提供的接口爬取城市公园的相关信息. 所利用的API接口有两个: 1.http://api.ma ...

  3. python爬取百度地图数据_百度地图POI数据爬取

    利用百度地图开发者中心中的web API获取城市POI数据,后期会写出完整的多种参数详细数据获取教程.本次只写出了根据关键词和目的地的数据获取程序. 将爬取下来的数据保存到本地csv文件. 百度API ...

  4. 百度地图瓦片数据爬取--java代码(地图数据篇.2)

    听老人家说:多看美女会长寿 地图之家总目录(建议先查看该内容) 文章末尾处提供保证可运行完整代码包,运行如有问题,可"私信"博主. 效果如下所示: 爬取后的瓦片数据可通过nginx ...

  5. python爬取地图地址_Python爬取百度地图poi数据 !

    锵锵锵,我来啦.10天过的好快呀,4月份都已经过了三分之一,我的体重还居高不下,qwq.今天给大家分享python爬取百度地图小区的数据,希望大家看后,可以尝试自己编写爬取自己所在市的中学,公园,银行 ...

  6. python爬百度翻译-爬虫 python爬取百度翻译接口 超详细附源码

    前言 今天教大家如何利用 firefox 分析百度翻译的接口,并用python爬取接口.大家学会后可以干一些有趣的事情,比如做一个自己的翻译软件. 具体内容 1 - 找到URL接口 进入百度翻译的网址 ...

  7. python爬取百度使用kw关键字爬取时出现,百度安全验证,解决方法

    python爬取百度使用kw关键字爬取时出现,百度安全验证,解决方法 之前爬取百度用kw时的代码(没有任何问题) import requestsurl = 'http://www.baidu.com/ ...

  8. 高德地图交通态势爬取并存入MySQL数据库

    高德地图交通态势爬取并存入mysql数据库 高德地图交通态势开放api链接: 高德交通态势 高德地图交通态势使用流程: 第一步,申请"Web服务API接口"密钥(Key): 第二步 ...

  9. python爬取地图数据_高德3地图之python爬取POI数据及其边界经纬度(根据关键字在城市范围内搜索)...

    目前高德的边界没法批量爬取,不过可以采用百度地图的接口来替代,目前用着还可以,参见这里: 为了方便大家,不用再为安装环境,以及运行报错等问题困扰,目前已经将POI数据爬取做成一个在线公开的数工具,地址 ...

  10. 百度午夜蓝地图瓦片数据爬取--java代码(地图数据篇.15)

    听老人家说:多看美女会长寿 地图之家总目录(建议先查看该内容) 文章末尾处提供保证可运行完整代码包,运行如有问题,可"私信"博主. 效果如下所示: 爬取后的瓦片数据可通过nginx ...

最新文章

  1. linux文件删除漏洞,OpenStack Glance v1 API任意文件删除漏洞(CVE-2012-4573)
  2. linux中安装vsftpd出现的问题
  3. 使用SharePoint 2007 Web Service上传文件到文档库
  4. 学习Jsoup(三)
  5. iOS开发中的HTML解析
  6. 想活得开心,请放下这7样:烦恼、自卑、懒惰、消极、抱怨、犹豫、狭隘
  7. libudev-dev : Depends: libudev0 (= 175-0ubuntu9) but 175-0ubuntu9.3 is to be installed 错误解决方案...
  8. 我的移动开发春季历程,大厂面试题汇总
  9. python系列13:python中Path常用功能
  10. WiFi远程监控,监控摄像头只有在WiFi环境才能使用吗
  11. 炫酷的ViewPager翻页动画
  12. Linux第7章Gdk及Cairo基础,Linux第7章Gdk及Cairo基础.ppt
  13. 码农的自我修养之从需求分析到软件设计
  14. 飞机大战之六:敌机爆炸(碰撞检测)
  15. 创意竖版产品发布会快闪PPT,等你来拿!
  16. mybatis学习与理解
  17. K8S - 安装教程 和 体验(kubeadm)
  18. 关于django在database或者后台输入字段为Incorrect string value: ‘\xE4\xBD\xA0\xE4\xBC\x9A问题
  19. ‘mnist.npz‘手写体数字数据集下载
  20. Linux操作系统Linux20+常用入门操作

热门文章

  1. 数据治理(十一):数据安全管理Ranger初步认识
  2. Tivoli Storage Manager安装配置
  3. 可复制的领导力读书笔记-2
  4. H.266/VVC技术学习:帧内预测之MIP技术
  5. 京东店铺所有商品API接口(JD整店商品查询API接口)
  6. mysql can t drop_异常之 mysql Can't drop database 'drop_database'; database doesn't exist
  7. Android开发英语单词积累
  8. flea-db使用之SQL模板接入
  9. 为什么滴滴裁员2000人,被裁员工却像中奖一样开心?
  10. HTML仿腾讯微博首页(Dreamweaver网页作业)