目前,大厂的服务范围越来越广,提供的数据信息也是比较全的,在生活服务,办公领域,人工智能等方面都全面覆盖,相对来说,他们的用户基数大,通过用户获取的信息也是巨大的。除了百度提供api,国内提供免费API获取数据的还有很多,包括新浪、豆瓣电影、饿了么、阿里、腾讯等今天使用百度地图API来请求我们想要的数据。

第一步.注册百度开发者账号

注册成功后就可以获取到应用服务AK也就是API秘钥,这个是最重要的,应用名称可以随便取,如果是普通用户一天只有2000调用限额,认证用户一天有10万次调用限额

在百度地图web服务API文档中我可以看见提供的接口和相关参数,其中就有我们要获取的AK参数,使用的GET请求

一.下面我们尝试使用API获取获取北京市的城市公园数据,需要配置参数

importrequestsimportjsondefgetjson(loc):

headers= {‘User-Agent‘ : ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}

pa={‘q‘: ‘公园‘,‘region‘: loc,‘scope‘: ‘2‘,‘page_size‘: 20,‘page_num‘: 0,‘output‘: ‘json‘,‘ak‘: ‘填写自己的AK‘}

r= requests.get("http://api.map.baidu.com/place/v2/search", params=pa, headers=headers)

decodejson=json.loads(r.text)returndecodejson

getjson(‘北京市‘)

二.获取所有拥有公园的城市

importrequestsimportjsondefgetjson(loc):

headers= {‘User-Agent‘ : ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}

pa={‘q‘: ‘公园‘,‘region‘: loc,‘scope‘: ‘2‘,‘page_size‘: 20,‘page_num‘: 0,‘output‘: ‘json‘,‘ak‘: ‘填写自己的AK‘}

r= requests.get("http://api.map.baidu.com/place/v2/search", params=pa, headers=headers)

decodejson=json.loads(r.text)returndecodejson

province_list= [‘江苏省‘, ‘浙江省‘, ‘广东省‘, ‘福建省‘, ‘山东省‘, ‘河南省‘, ‘河北省‘, ‘四川省‘, ‘辽宁省‘, ‘云南省‘,‘湖南省‘, ‘湖北省‘, ‘江西省‘, ‘安徽省‘, ‘山西省‘, ‘广西壮族自治区‘, ‘陕西省‘, ‘黑龙江省‘, ‘内蒙古自治区‘,‘贵州省‘, ‘吉林省‘, ‘甘肃省‘, ‘新疆维吾尔自治区‘, ‘海南省‘, ‘宁夏回族自治区‘, ‘青海省‘, ‘西藏自治区‘]for eachprovince inprovince_list:

decodejson=getjson(eachprovince)#print(decodejson["results"])

for eachcity in decodejson.get(‘results‘):print(eachcity)

city= eachcity[‘name‘]#print(city)

num = eachcity[‘num‘]

output= ‘\t‘.join([city, str(num)]) + ‘\r\n‘with open(‘cities.txt‘, "a+", encoding=‘utf-8‘) as f:

f.write(output)

f.close()

importrequestsimportjsondefgetjson(loc):

headers= {‘User-Agent‘ : ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}

pa={‘q‘: ‘公园‘,‘region‘: loc,‘scope‘: ‘2‘,‘page_size‘: 20,‘page_num‘: 0,‘output‘: ‘json‘,‘ak‘: ‘填写自己的AK‘}

r= requests.get("http://api.map.baidu.com/place/v2/search", params=pa, headers=headers)

decodejson=json.loads(r.text)returndecodejson

decodejson= getjson(‘全国‘)

six_cities_list= [‘北京市‘,‘上海市‘,‘重庆市‘,‘天津市‘,‘香港特别行政区‘,‘澳门特别行政区‘,]for eachprovince in decodejson[‘results‘]:

city= eachprovince[‘name‘]

num= eachprovince[‘num‘]if city insix_cities_list:

output= ‘\t‘.join([city, str(num)]) + ‘\r\n‘with open(‘cities789.txt‘, "a+", encoding=‘utf-8‘) as f:

f.write(output)

f.close()

保存到文件

三.获取所有城市的公园数据,在从各个城市获取数据之前,先在MySQL建立baidumap数据库,用来存放所有的数据

#coding=utf-8

importpymysql

conn= pymysql.connect(host=‘localhost‘ , user=‘root‘, passwd=‘*******‘, db =‘baidumap‘, charset="utf8")

cur=conn.cursor()

sql= """CREATE TABLE city (

id INT NOT NULL AUTO_INCREMENT,

city VARCHAR(200) NOT NULL,

park VARCHAR(200) NOT NULL,

location_lat FLOAT,

location_lng FLOAT,

address VARCHAR(200),

street_id VARCHAR(200),

uid VARCHAR(200),

created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id)

);"""cur.execute(sql)

cur.close()

conn.commit()

conn.close()

city_list =list()

with open("cities.txt", ‘r‘, encoding=‘utf-8‘) as txt_file:for eachLine intxt_file:if eachLine != "" and eachLine != "\n":

fields= eachLine.split("\t")

city=fields[0]

city_list.append(city)

txt_file.close()

#接下来爬取每个城市的数据,并将其加入city数据表中

importrequestsimportjsonimportpymysql

conn= pymysql.connect(host=‘localhost‘ , user=‘root‘, passwd=‘********‘, db =‘baidumap‘, charset="utf8")

cur=conn.cursor()defgetjson(loc,page_num):

headers= {‘User-Agent‘ : ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}

pa={‘q‘: ‘公园‘,‘region‘: loc,‘scope‘: ‘2‘,‘page_size‘: 20,‘page_num‘: page_num,‘output‘: ‘json‘,‘ak‘: ‘填写自己的AK‘}

r= requests.get("http://api.map.baidu.com/place/v2/search", params=pa, headers=headers)

decodejson=json.loads(r.text)returndecodejsonfor eachcity incity_list:

not_last_page=True

page_num=0whilenot_last_page:

decodejson=getjson(eachcity, page_num)#print (eachcity, page_num)

if decodejson[‘results‘]:for eachone in decodejson[‘results‘]:try:

park= eachone[‘name‘]except:

park=Nonetry:

location_lat= eachone[‘location‘][‘lat‘]except:

location_lat=Nonetry:

location_lng= eachone[‘location‘][‘lng‘]except:

location_lng=Nonetry:

address= eachone[‘address‘]except:

address=Nonetry:

street_id= eachone[‘street_id‘]except:

street_id=Nonetry:

uid= eachone[‘uid‘]except:

uid=None

sql= """INSERT INTO baidumap.city

(city, park, location_lat, location_lng, address, street_id, uid)

VALUES

(%s, %s, %s, %s, %s, %s, %s);"""cur.execute(sql, (eachcity, park, location_lat, location_lng, address, street_id, uid,))

conn.commit()

page_num+= 1

else:

not_last_page=False

cur.close()

conn.close()

四.获取所有公园的详细信息

baidumap数据库已经有了city这个表格,存储了所有城市的公园数据,但是这个数据比较粗糙,接下来我们使用百度地图检索服务获取没一个公园的详情

#coding=utf-8

importpymysql

conn= pymysql.connect(host=‘localhost‘ , user=‘root‘, passwd=‘*******‘, db =‘baidumap‘, charset="utf8")

cur=conn.cursor()

sql= """CREATE TABLE park (

id INT NOT NULL AUTO_INCREMENT,

park VARCHAR(200) NOT NULL,

location_lat FLOAT,

location_lng FLOAT,

address VARCHAR(200),

street_id VARCHAR(200),

telephone VARCHAR(200),

detail INT,

uid VARCHAR(200),

tag VARCHAR(200),

type VARCHAR(200),

detail_url VARCHAR(800),

price INT,

overall_rating FLOAT,

image_num INT,

comment_num INT,

shop_hours VARCHAR(800),

alias VARCHAR(800),

keyword VARCHAR(800),

scope_type VARCHAR(200),

scope_grade VARCHAR(200),

description VARCHAR(9000),

created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id)

);"""cur.execute(sql)

cur.close()

conn.commit()

conn.close()

importrequestsimportjsonimportpymysql

conn= pymysql.connect(host=‘localhost‘ , user=‘root‘, passwd=‘********‘, db =‘baidumap‘, charset="utf8")

cur=conn.cursor()

sql= "Select uid from baidumap.city where id > 0;"cur.execute(sql)

conn.commit()

results=cur.fetchall()

cur.close()

conn.close()

importrequestsimportjsonimportpymysql

conn= pymysql.connect(host=‘localhost‘ , user=‘root‘, passwd=‘********‘, db =‘baidumap‘, charset="utf8")

cur=conn.cursor()

sql= "Select uid from baidumap.city where id > 0;"cur.execute(sql)

conn.commit()

results=cur.fetchall()#print(results)

defgetjson(uid):

headers= {‘User-Agent‘ : ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}

pa={‘uid‘: uid,‘scope‘: ‘2‘,‘output‘: ‘json‘,‘ak‘: ‘填写自己的AK‘}

r= requests.get("http://api.map.baidu.com/place/v2/search", params=pa, headers=headers)

decodejson=json.loads(r.text)returndecodejsonfor row inresults:print(row)

uid=row[0]

decodejson=getjson(uid)#print (uid)

info = decodejson[‘result‘]try:

park= info[‘name‘]except:

park=Nonetry:

location_lat= info[‘location‘][‘lat‘]except:

location_lat=Nonetry:

location_lng= info[‘location‘][‘lng‘]except:

location_lng=Nonetry:

address= info[‘address‘]except:

address=Nonetry:

street_id= info[‘street_id‘]except:

street_id=Nonetry:

telephone= info[‘telephone‘]except:

telephone=Nonetry:

detail= info[‘detail‘]except:

detail=Nonetry:

tag= info[‘detail_info‘][‘tag‘]except:

tag=Nonetry:

detail_url= info[‘detail_info‘][‘detail_url‘]except:

detail_url=Nonetry:

type= info[‘detail_info‘][‘type‘]except:

type=Nonetry:

overall_rating= info[‘detail_info‘][‘overall_rating‘]except:

overall_rating=Nonetry:

image_num= info[‘detail_info‘][‘image_num‘]except:

image_num=Nonetry:

comment_num= info[‘detail_info‘][‘comment_num‘]except:

comment_num=Nonetry:

key_words= ‘‘key_words_list= info[‘detail_info‘][‘di_review_keyword‘]for eachone inkey_words_list:

key_words= key_words + eachone[‘keyword‘] + ‘/‘

except:

key_words=Nonetry:

shop_hours= info[‘detail_info‘][‘shop_hours‘]except:

shop_hours=Nonetry:

alias= info[‘detail_info‘][‘alias‘]except:

alias=Nonetry:

scope_type= info[‘detail_info‘][‘scope_type‘]except:

scope_type=Nonetry:

scope_grade= info[‘detail_info‘][‘scope_grade‘]except:

scope_grade=Nonetry:

description= info[‘detail_info‘][‘description‘]except:

description=None

sql= """INSERT INTO baidumap.park

(park, location_lat, location_lng, address, street_id, uid, telephone, detail, tag, detail_url, type, overall_rating, image_num,

comment_num, keyword, shop_hours, alias, scope_type, scope_grade, description)

VALUES

(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);"""cur.execute(sql, (park, location_lat, location_lng, address, street_id, uid, telephone, detail, tag, detail_url,

type, overall_rating, image_num, comment_num, key_words, shop_hours, alias, scope_type, scope_grade, description,))

conn.commit()

cur.close()

conn.close()

baidumap api MySQL_百度地图API获取数据相关推荐

  1. baidumap api MySQL_百度地图API开发笔记一(基础篇)

    什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供了诸 ...

  2. baidumap api MySQL_百度地图API

    本文我将从如何使用地图API(本文以百度为例,谷歌类似)开始,往后的扩展行的内容详见后续文章. 1.打开链接http://developer.baidu.com/map/jshome.htm 这里有很 ...

  3. 百度地图后台获取数据,根据经纬度定位标记点,弹出通知窗口

    通过ajax获取后台的经纬度信息和其他信息,根据经纬度信息在地图上显示标记点,点击标记点显示通知窗口 <body> <div id="allmap">< ...

  4. 百度地图 api php,百度地图API使用方法详解

    百度地图api是由javascript语言编写的,在使用之前需要把api引用到页面中,本篇文章给大家介绍百度地图api使用方法,需要的朋友可以参考下 最近做了个项目,其中项目中有个需求需要用到百度地图 ...

  5. 高德地图API和百度地图API哪个更适合开发者?

    高德vs百度 优点: 1.api十分简单易上手,高德一行代码,百度最少要五行: 2.数据量很丰盛,郊区poi<无关键字>搜索随便都有几十个,然而百度早早就关闭了该接口: 缺点: 1.偶尔出 ...

  6. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  7. Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息

    本文主要介绍了Android项目集成百度地图API,使用AlarmManager定时调用Service,在Service中请求坐标更新,并通过坐标得到省.市和县三级地理位置信息的方法. 程序结构很简单 ...

  8. 百度地图API开发指南

    百度地图API开发指南 本文为百度地图API官方版本的开发指南,供各位51CTO的网友进行参考. 简介什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮 ...

  9. python: 百度地图api爬虫

    python网络爬虫的本质就是两步: 设置请求参数(url,headers,cookies,post或get验证等)访问目标站点的服务器: 解析服务器返回的文档,提取需要的信息. 而API的工作机制与 ...

  10. 百度地图API调用实例之地址标注与位置显示

    之前弄了个谷歌地图API标注的调用实例,后来要求改成百度地图. 感谢主,通过网上资料(百度地图API,百度地图API详解之地图标注)收集及研究, 终于把百度地图标注和显示功能实现出来了,具体实现方法如 ...

最新文章

  1. Windows 8失败的5个原因
  2. 学习动态性能表 第二篇--v$sesstat
  3. 新生男婴自带新冠抗体,感染者母亲如今抗体消失,医生:抗体转移了
  4. Flask-sqlalchemy外键关系映射
  5. Hi Table定义未来电视!祝贺海信发布S7社交电视! ​
  6. python实现var模型_copula函数及其Var计算的Python实现
  7. Ollydbg使用教程学习总结(一)
  8. 我了解到的面试的一些小内幕!附面试题答案
  9. 【技术博客】 利用Postman和Jmeter进行接口性能测试
  10. 为什么我们需要域?MS Active Directory系列之一
  11. securityPolicy与安全策略等级配置
  12. [译]C#7 Pattern Matching
  13. 史上最全的主流CPU性能排名
  14. JavaSE基础——多态、抽象类、接口
  15. 个人对游戏加速器行业看法(二):加速器现有架构梳理
  16. ThreadLocal
  17. 腾讯云大带宽云服务器20M性能评测
  18. 微软官方dllcache恢复的批处理
  19. 语言处理 之 fastspeech2,ar,nar研究
  20. 亚控科技的KingSCADA多个漏洞

热门文章

  1. 单片机C 语言程序设计教程,基于51单片机的C语言程序设计教程.doc
  2. R语言大作业(二):上海市人口普查数据分析
  3. Win7/Win10如何设置局域网文件共享
  4. [渝粤教育] 湘潭大学 计算机组成与体系结构 参考 资料
  5. DSP课设项目(ICETEK-VC5509-EDU)
  6. CSS权威指南(4)
  7. 【数据分享】全国POI数据分享(持续更新中)
  8. 解决eclipse乱码问题
  9. 大学英语综合教程一 Unit 3 课文内容英译中 中英翻译
  10. Airflow安装教程