Python爬虫系列之三:根据名称爬取经纬度信息并Geohash编码
2018-01-27 22:32
686 查看
1 开发场景
安装geohash模块并根据经纬度计算geohash值.爬取某些名称(地名)的经纬度等信息.
开发语言及工具
Python 2
Anaconda
mzgeohash
安装包(tar.gz)下载 / 安装
Link 1
源码下载 / 安装
Link 2
注意:
个人尝试,mzgeohash支持Python 2, Python 3 下会提示语法错误. 为了便于使用,开发均在Python 2 内核下完成.
2 详细描述
基于 Python、通过百度API,爬取对应地名的经纬度等信息 .通过Python中 Geohash 模块,依据经纬度计算对应名称的 geohash 值 .
3 具体代码
# coding: utf-8 # ## 主要实现 # - 批量查询位置点 经纬度等信息 # - 经纬度转换为 geohash块 # ### Note # - 查询位置列表, 需<font color=#FF1953>提前提供</font> # In[5]: city_lis=['北京', '上海', '郑州'] # ### 获取位置地点经纬度等信息 # - 获取经纬度等信息 # - 计算 geohash # In[6]: import pandas as pd import mzgeohash import urllib2 import urllib import json # In[23]: ''' 根据位置名称,获取经纬度等信息 ''' def get_metas_from_baidu(city): metas={} metas['key']='f247cdb592eb43ebac6ccd27f796e2d2' metas['address']=city # 城市名称 data=urllib.urlencode(metas) url='http://api.map.baidu.com/geocoder?output=json&'+urllib.urlencode(metas) # 注释 url='http://api.map.baidu.com/geocoder?'+urllib.urlencode(metas)+'&output=json' unicode_s=urllib2.urlopen(url) return json.loads(unicode_s.read()) city_meta_lis=[] # 计算 geohash 编码并存储 for city in city_lis: tmp=get_metas_from_baidu(city) latitude=tmp['result']['location']['lat'] longitude=tmp['result']['location']['lng'] t_geohash=mzgeohash.encode((longitude,latitude)) # 使用mzgeohash 计算geohash city_meta_lis.append([city,latitude,longitude,t_geohash]) # 存储 # In[24]: # 格式化输出 df=pd.DataFrame(city_meta_lis, columns=['city','latitude','longitude','geohash']) df
4 数据结果
位置名称(地名)经纬度、geohash值等数据结果:5 参考文章
百度地图 API 介绍(Geocoding API,推荐!)主要包含以下4个部分:
接口功能
接口参数
返回数据说明
接口示例
百度地图WEB 服务API接口说明(推荐!)
6 问题总结
INVALID_PARAMETERS请求路径中包含非法参数
{ "results":[ ] , "status" : "INVALID_PARAMETERS" }
解决方法
对比 被注释掉的URL与 当前URL, 变更参数位置测试API是否能成功访问。
Geocoding API v1.0
7 脚本下载
lng_lat_2_geohash_two_way.ipynb相关文章推荐
- Python爬虫系列之二:爬取2018公务员招考职位信息
- Python爬虫学习---------根据分类爬取豆瓣电影的电影信息
- 根据经纬度获取地理位置名称省、市等信息
- Python爬虫笔记(2)根据目标信息解析数据和存储目标信息
- <四>、python爬虫抓取购物网站商品信息--图片价格名称
- python3.5爬虫实例:根据城市名称来获取该城市最近七天的天气预报
- Java爬虫系列之一HttpClient【爬取京东Python书籍信息】
- 玩转Python爬虫与信息获取(1)
- 百度地图api-根据地区名称反查其经纬度的实例
- android之location 根据接口获取经纬度信息
- python爬虫实战笔记---以轮子哥为起点Scrapy爬取知乎用户信息
- Python爬虫学习系列教程
- Python爬虫系列(二):requests基础
- Python爬虫学习系列教程-----------爬虫系列 你值的收藏
- 用python+selenium从百度获取本地明日的天气信息并根据温度情况设置提醒
- Python爬虫系列(三):requests高级耍法
- python爬虫——根据指定关键词爬取新浪微博
- python3的爬虫抓取猫眼电影的信息(requests+正则表达式)
- Python获取网卡信息(名称、MAC、IP、网关等) 推荐
- python根据地球经纬度计算距离