Python微博地点签到大数据实战 微博API的使用

来源:互联网 发布:cbc知学学院 编辑:程序博客网 时间:2024/06/04 18:27

原文:http://blog.csdn.net/jackeriss/article/details/49009899

首先,你需要一个新浪开发者账号,很容易注册的,注册完后创建一个应用,创建时类型选择粉丝服务平台就行了。

(http://open.weibo.com/development/fenfu    点击右边的创建应用即可)

然后进到刚才创建的应用的页面,选择应用信息,在基本信息中可以看见以下内容


App Key:344XXXXXXX
App Secret:577a017XXXXXXXXXXXXXXXXXXXXXXXXX

应用地址:https://api.weibo.com/oauth2/default.html


这些都是使用新浪微博API的基础,有了这些,你只需要根据你所使用的语言下载相应的SDK即可放心食用。

SDK食用方法

这里仅介绍 Python 的,其他语言类似

首先,安装 weibo.py 这个库,

安装 weibo.py库:下载新浪微博的 SDK,然后解压。  DOS命令窗口,命令行工具cd切换到该解压文件,找到setup.py文件,然后输入python setup.py install

使用时将其import进来即可。

具体调用如下:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #coding=utf-8  
  2. import weibo  
  3. #import json  
  4.   
  5. APP_KEY = '344XXXXXXX'  
  6. APP_SECRET = '577a017XXXXXXXXXXXXXXXXXXXXXXXXX'  
  7. CALL_BACK = 'https://api.weibo.com/oauth2/default.html'  
  8.   
  9. client = weibo.APIClient(APP_KEY, APP_SECRET, CALL_BACK)  
  10. auth_url = client.get_authorize_url()  
  11. print "auth_url : " + auth_url  
  12. code = raw_input("input the retured code : ")  
  13. r = client.request_access_token(code)  
  14. client.set_access_token(r.access_token, r.expires_in)  
  15. poi_result = str(client.place.nearby.pois.get(lat=102.700171,long=25.057097))#以获取某经纬度附近的地点信息为例  
  16. print poi_result#此时poi_result是json格式的数据,利用json模块进行解析即可  
程序运行后会打印一段网址,将该网址在浏览器中打开,并用开发者账号登录。

这时会跳转到另一个界面,页面正中间写着“微博OAuth2.0”,这时候将这个页面网址中“code=”后面的内容拷贝到刚才运行的程序的提示“input the retured code : ”后面并回车。

程序会打印出离地理坐标(东经,北纬)最近的POI点的坐标,关于坐标和POI点的知识详解请看Python微博地点签到大数据实战(二)POI与坐标

Github:https://github.com/Jackeriss/weibo_checkin_spider


原文:https://github.com/Jackeriss/weibo_checkin_spider/blob/master/main.py

#coding=utf-8 import weibo import json   APP_KEY = 'XXXXXXXXXXXXXX'#在新浪申请一个APP APP_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' CALL_BACK = 'https://api.weibo.com/oauth2/default.html' def run(): client = weibo.APIClient(APP_KEY,APP_SECRET,CALL_BACK) auth_url = client.get_authorize_url() print "auth_url : "+ auth_url code = raw_input("input the retured code :") r = client.request_access_token(code) client.set_access_token(r.access_token, r.expires_in) lat_long_file = open("poi.txt","r") cache = []#缓存以确保不重复 for lines in lat_long_file: try: checkin_num = 0 title = None lat_long = lines.strip("\n").split(",") longitude = lat_long[0] latitude = lat_long[1] poi_result = str(client.place.nearby.pois.get(lat=latitude,long=longitude))#返回附近多个poi点的信息 poi_list = eval(poi_result) poi_string = json.dumps(poi_list) poi_json = json.loads(poi_string) for i in range(0,len(poi_json["pois"])):#把附近所有的poi点都遍历一遍 if poi_json["pois"][i]["poiid"]in cache: pass else: poi_id = poi_json["pois"][i]["poiid"] cache.append(poi_id) checkin_result=str(client.place.pois.show.get(poiid=poi_id)) checkin_list = eval(checkin_result) checkin_string = json.dumps(checkin_list) checkin_json = json.loads(checkin_string) checkin_num = checkin_json["checkin_num"]#签到数 lon = checkin_json["lon"]#经度 lat = checkin_json["lat"]#纬度 title = checkin_json["title"]#地点名称 if checkin_num !=0 and title != Noneprint "%s\t%s\t%s\t%s"%(lon,lat,checkin_num,title) exceptprint "ERROR!!!!"   if __name__ == "__main__": run()

0 0
原创粉丝点击