如何用python python连接百度apii统计楼盘

Python调用百度API
我的图书馆
Python调用百度API
来源:城楼听雪-简书作者:jking54链接:/p/ee856b499ebc(点击尾部阅读原文前往)纸上得来终觉浅,绝知此事要躬行今天稍微看了一下百度的API,试了一下如何调用那些API,发现其实是很容易的。步骤:1、访问百度API S2、找到想要调用的API,这里我尝试的是百度美女图片请求实例:# -*- coding: utf-8 -*-import sys, urllib, urllib2, jsonurl = '/txapi/mvtp/meinv?num=10'req = urllib2.Request(url)req.add_header('apikey', '您自己的apikey')resp = urllib2.urlopen(req)content = resp.read()if(content):&& print(content)3、按照说明,自己稍作修改即可。我的代码:(比较乱,请谅解)首先引入库,这里需要用到requests,jsonimport requestsimport json然后写api地址,参数表url = '/txapi/mvtp/meinv'headers = {'apikey':'*******(这里用你自己的apikey)'}params = {'num':'10'}发出请求,得到响应r = requests.get(url,params = params,headers=headers)r = r.json()定义一个存图片的函数def saveImage(imgUrl,imgName= 'default.jpg'):&&response = requests.get(imgUrl,stream = True)&&image = response.content&&dst = 'f:baidu_img'&&path = dst+imgName&&print 'save the file:'+path+'n'&&with open(path,'wb') as img:&&&&img.write(image)&&img.close()开始获取图片地址,保存def run():&&for line in r['newslist']:&& title = line['title']&& picUrl = line['picUrl']&& saveImage(picUrl,imgName=title+'.jpg')run()运行结果:对于其他的API的调用,原理都一样,按照要求发出请求,然后对响应文本进行解析,得到自己想要的数据。下面再给一个api调用的实例代码,也是调用的图片(用有图片的例子来写,结果比较明显)\# -*- coding:utf-8 -*-import requestsurl_1 = 'http://www.tngou.net/tnfs/api/list'\#url_2 = 'http://www.tngou.net/tnfs/api/classify'src_header = 'http://tnfs.tngou.net/image'headers = {'apikey':'*******(这里用你自己的apikey)'}params_1 = {&&&&'page':3,&&&&'rows':20,&&&&'id':6&&&&&&#需根据classify结果才能知道}r = requests.get(url_1)r = r.json()\#保存图片到本地路径def saveImage(imgUrl,imgName= 'default.jpg'):&&&&response = requests.get(imgUrl,stream = True)&&&&image = response.content&&&&dst = 'f:\baidu_img\'&&&&path = dst+imgName&&&&print 'save the file:'+path+'\n'&&&&with open(path,'wb') as img:&&&&&&&&img.write(image)&&&&img.close()\#开始def run():&&&&for line in r['tngou']:&&&&&&&&title = line['title']&&&&&&&&img = line['img']&&&&&&&&src_path = src_header+img&&&&&&&&saveImage(src_path,title+'.jpg')run()现在,是不是觉得很简单?当然,你也可以直接用requests,而不用调用API,对响应文本用正则表达式匹配,得到想要的数据。●本文编号51,以后想阅读这篇文章直接输入51即可。●输入m可以获取到文章目录
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢Python爬虫(二)--利用百度地图API批量获取城市所有的POI点 - WenWu_Both的博客 - CSDN博客
Python爬虫(二)--利用百度地图API批量获取城市所有的POI点
作者:WenWu_Both
版权:本文版权归作者和CSDN博客共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任
上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步:
1、设置请求参数(url,headers,cookies,post或get验证等)访问目标站点的服务器;
2、解析服务器返回的文档,提取需要的信息。
而API的工作机制与爬虫的两步类似,但也有些许不同:
1、API一般只需要设置url即可,且请求方式一般为“get”方式
2、API服务器返回的通常是json或xml格式的数据,解析更简单
也许到这你就明白了,API简直就是开放的“爬虫”呀,可以告诉你,基本就是这个意思。好的,言归正传,本篇我们就演示如何运用Python结合百度地图API来批量获取POI(兴趣点)。
所谓POI(兴趣点),指的是人们感兴趣,比较常去的地方,比如银行、医院、学校等,利用城市的POI的空间属性可以做非常多的事情,至于什么事情呢,此处省略10000字。。。
说干就干,Let’s go!
(1)创建百度地图应用
访问百度地图API需要一个信令(AK),打开,点击右上角“API控制台”,即进入了百度地图的开发界面。
选择“创建应用”-应用类型勾选“浏览器端”–勾选所用到的服务(一般全选即可),此时就创建好了应用账号,得到“AK”
(2)Place API 及Web服务API
打开百度地图API的POI模块,网址:,这个页面详细介绍了Place API的请求参数及返回数据的情况。
可以看到,Place API 提供区域检索POI服务与POI详情服务。
1. 区域检索POI服务提供三种区域检索方法:
a.城市内检索(对应JavaScriptAPI的Search方法)
b.矩形检索(对应JavaScript API的SearchInBound方法)
c.圆形区域检索(对应JavaScript的SearchNearBy方法)。
2. POI详情服务提供查询单个POI的详情信息,如好评。
并给出了请求的一个示例,设置检索城市为北京,检索关键字为“饭店”,检索后返回10条数据:
http://api.map.baidu.com/place/v2/search?q=饭店&region=北京&output=json&ak=您的AK
将上述url粘贴到浏览器里,返回的数据如下:
上图是将返回的json数据解析之后的结果,可以看到,服务器返回了10条北京市的饭店的信息,包括饭店名称、经纬度、地址、联系电话等。
具体的参数设置,自行去该网页去看吧,这里就不再赘述,这里我们主要利用“矩形检索”的方式来获取整个城市的特定POI信息,其url格式如下:
http://api.map.baidu.com/place/v2/search?query=美食&page_size=10&page_num=0&scope=1&bounds=39.915,116.404,39.975,116.414&output=json&ak={您的密钥}
通过实验可以发现,一个矩阵区域最多返回400(20*20)个POI点,即page_size = 20
& page_total = 20,虽然官方文档里说一个区域返回760+都不成问题的,但是测试了一下,发现并没有这么多,最多400个。
显然,整个城市不可能仅400个特定描述的POI点,所以我们需要对整个城市进行分片操作,然后每片进行访问,通过Python的循环实现。
(3)获取城市特定POI点集合
比如:我们想获取北京市四环以内所有饭店的信息,即可通过上述步骤借助Python快速实现,废话不多说,直接上代码:
import urllib2
import json
from pymongo import MongoClient
left_bottom = [116.282387,39.835862];
right_top = [116.497405,39.996569];
part_n = 2;
client = MongoClient('localhost',27001)
db = client.transdata
db.authenticate("user", "password")
url0 = 'http://api./place/v2/search?';
x_item = (right_top[0]-left_bottom[0])/part_n;
y_item = (right_top[1]-left_bottom[1])/part_n;
query = '饭店';
ak = 'xxxxxxxxxxxxxxxxxxxxxx';
for i in range(part_n):
for j in range(part_n):
left_bottom_part = [left_bottom[0]+i*x_item,left_bottom[1]+j*y_item];
right_top_part = [right_top[0]+i*x_item,right_top[1]+j*y_item];
for k in range(20):
url = url0 + 'query=' + query + '&page_size=20&page_num=' + str(k) + '&scope=1&bounds=' + str(left_bottom_part[1]) + ',' + str(left_bottom_part[0]) + ','+str(right_top_part[1]) + ',' + str(right_top_part[0]) + '&output=json&ak=' +
data = urllib2.urlopen(url);
hjson = json.loads(data.read());
if hjson['message'] == 'ok':
results = hjson['results'];
for m in range(len(results)):
col.insert_one(results[m]);
print '第',str(n),'个切片入库成功'
执行为上述代码,运行结果如下:
可以看到,我们将北京市四环以内区域分成4个切片来进行处理,之所以分切片处理,主要是单个区域访问最多返回400个结果,当区域较大的时候,区域内往往不止400个,所以讲大区域进行切片处理,最后,我们通过数据聚合操作,发现返回的结果总共1014个。(理论上应该返回1600,实际返回1014,说明切片的数量是合适的)
好的,我们本篇的分享到这里就要结束了,最后只想说,API真的是个好东西,科学地使用它我们可以做出很多炫酷的应用,像现在比较活跃的数据型应用,其数据接口基本都是基于API形式的,后面的分享我们还会用到更多API的,大家一起期待吧,哈哈,今天就到这里了,各位回见。
我的热门文章本月热门文章Sorry. No data so far.
- 2,330 views - 15,261 views - 9,947 views - 8,717 views - 5,894 views - 4,225 views - 4,076 views - 3,803 views - 3,645 views - 3,587 views - 3,468 views
加载中……后使用快捷导航没有帐号?
Python 调用百度API
查看: 29682|
评论: 0|原作者: 城楼听雪|来自:
摘要: 纸上得来终觉浅,绝知此事要躬行今天稍微看了一下百度的API,试了一下如何调用那些API,发现其实是很容易的。步骤:1.访问百度API S2.找到想要调用的API,这里我尝试的是百度美女图片Paste_Image.png请求实例: ...
纸上得来终觉浅,绝知此事要躬行今天稍微看了一下百度的API,试了一下如何调用那些API,发现其实是很容易的。步骤:1.访问百度API S2.找到想要调用的API,这里我尝试的是百度美女图片Paste_Image.png请求实例:\# -\*- coding: utf-8 -\*-import sys, urllib, urllib2, jsonurl = '/txapi/mvtp/meinv?num=10'req = urllib2.Request(url)req.add_header("apikey", "您自己的apikey")resp = urllib2.urlopen(req)content = resp.read()if(content):& & print(content)3.按照说明,自己稍作修改即可。我的代码:(比较乱,请谅解)首先引入库,这里需要用到requests,jsonimport requests& import json然后写api地址,参数表url = '/txapi/mvtp/meinv'headers = {'apikey':'*******(这里用你自己的apikey)'}params = {'num':'10'}发出请求,得到响应r = requests.get(url,params = params,headers=headers)r = r.json()定义一个存图片的函数def saveImage(imgUrl,imgName= 'default.jpg'):& & response = requests.get(imgUrl,stream = True)& & image = response.content& & dst = "f:\baidu_img\"& & path = dst+imgName& & print 'save the file:'+path+'\n'& & with open(path,'wb') as img:& & & &img.write(image)& & img.close()开始获取图片地址,保存def run():& & for line in r['newslist']:& & & & title = line['title']&& & & &picUrl = line['picUrl']& & & &saveImage(picUrl,imgName=title+'.jpg')run()运行结果:Paste_Image.png对于其他的API的调用,原理都一样,按照要求发出请求,然后对响应文本进行解析,得到自己想要的数据。下面再给一个api调用的实例代码,也是调用的图片(用有图片的例子来写,结果比较明显)\# -*- coding:utf-8 -*-import requestsurl_1 = "http://www.tngou.net/tnfs/api/list"\#url_2 = "http://www.tngou.net/tnfs/api/classify"src_header = "http://tnfs.tngou.net/image"headers = {'apikey':'*******(这里用你自己的apikey)'}params_1 = {& & 'page':3,& & 'rows':20,& & 'id':6 & & &#需根据classify结果才能知道}r = requests.get(url_1)r = r.json()\#保存图片到本地路径def saveImage(imgUrl,imgName= 'default.jpg'):& & response = requests.get(imgUrl,stream = True)& & image = response.content& & dst = "f:\baidu_img\"& & path = dst+imgName& & print 'save the file:'+path+'\n'& & with open(path,'wb') as img:& & & & img.write(image)& & img.close()\#开始def run():& & for line in r['tngou']:& & & & title = line['title']& & & & img = line['img']& & & & src_path = src_header+img& & & & saveImage(src_path,title+'.jpg')run()现在,是不是觉得很简单?当然,你也可以直接用requests,而不用调用API,对响应文本用正则表达式匹配,得到想要的数据。欢迎加入本站公开兴趣群软件开发技术群兴趣范围包括:,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流QQ群:源代码研究群兴趣范围包括:Hadoop源代码解读,改进,优化,场景定制,与Hadoop有关的各种开源项目,总之就是玩转HadoopQQ群:&
刚表态过的朋友 ()
上一篇:下一篇:基于Python的房地产数据接口调用代码实例_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于Python的房地产数据接口调用代码实例
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 python 查 百度api 的文章

 

随机推荐