Python调用微博API

上头叫通过微博ID获取用户发布过的历史微博内容,于是研究了下新浪微博提供的API

1 首先在微博开放中心下“创建应用”创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个app-key和app-secret

2 在“微博开放平台”的“管理中心”找到刚才创建的应用,点开这个应用,点开左边“应用信息”栏,会看见“App key”和“App Secret”的字样,这两个东西是要在后面程序中使用的。然后在“应用信息”下的“高级信息”点击“编辑”按钮,将“授权回调页面”设置为:https://api.weibo.com/oauth2/default.html,将“取消授权回调页”也设置为:https://api.weibo.com/oauth2/default.html。

3 再去http://github.liaoxuefeng.com/sinaweibopy/下载新浪微博SDK,python有个简单的安装方式:直接在命令行下键入:

sudo pip install sinaweibopy

4 实例验证代码,通过微博提供的API抓取授权用户及其关注好友的微博:这里需要注意的是在浏览器弹出一个页面,要先点击“授权”(这里进行的OAuth 2认证,我理解为就是用户访问我的应用后将页面导向新浪服务器然后用户输入信息到新浪服务器后授权给我的应用访问用户数据,这里我将的微博授权给下面的程序了),授权后浏览器中的URL类似:https://api.weibo.com/oauth2/default.html?code=2024222384d5dc88316d21675259d73a将code后面那个复制到控制端,程序需要读入2024222384d5dc88316d21675259d73a这个数据

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from weibo import APIClient
import webbrowser#python内置的包
import pymongo
from pymongo import MongoClient
APP_KEY = '刚才那个App Key'#注意替换这里为自己申请的App信息
APP_SECRET = '刚才那个App Secret'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'#回调授权页面
#利用官方微博SDK
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
#得到授权页面的url,利用webbrowser打开这个url
url = client.get_authorize_url()
print url
webbrowser.open_new(url)
#获取code=后面的内容
print '输入url中code后面的内容后按回车键:'
code = raw_input()
#code = your.web.framework.request.get('code')
#client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
r = client.request_access_token(code)
access_token = r.access_token # 新浪返回的token,类似abc123xyz456
expires_in = r.expires_in
# 设置得到的access_token
client.set_access_token(access_token, expires_in)
'''
#可以打印下看看里面都有什么东西
#print client.statuses__public_timeline()
statuses = client.statuses__public_timeline()['statuses']
length = len(statuses)
#输出了部分信息
for i in range(0,length):
print u'昵称:'+statuses[i]['user']['screen_name']
print u'简介:'+statuses[i]['user']['description']
print u'位置:'+statuses[i]['user']['location']
print u'微博:'+statuses[i]['text']
'''
#获取授权用户及其关注好友的微博信息并写入mongo数据库
pagenum=1#微博API返回的微博数据是分页形式的,在API中通过设置页码来读取数据
write_location=MongoClient('localhost',27017)['data']['weiboapi_test']#这里是我自己的mongo数据库,不用mongo存储可以注释掉
while(True):
	data=client.statuses.friends_timeline.get(page=pagenum)['statuses']
	if data:
		pagenum+=1#不断获取新的页面
		for i in range(len(data)):
			write_location.insert(data[i])#不用mongo存储可以注释掉,直接改为print data[i]打印微博数据
	else:#如果读取完数据则结束
		break

在命令行执行:

python weibo_api.py #假设上面程序文件命名为weibo_api.py

会出现下面的字样:

输入url中code后面的内容后按回车键:

已在现有的浏览器会话中创建新的窗口。

2024222384d5dc88316d21675259d73a                   #注意这里输入上面那个授权后的浏览器中URL中code后面的东东

最后mongo中的数据类似于这样:

{ "_id" : ObjectId("5397d1709b6827148d2048bb"), "reposts_count" : 1, "favorited" : false, "in_reply_to_user_id" : "", "truncated" : false, "text" : "我不是漫画大师,也没主持康熙来了 [衰] 我们仨人,名字差很多耶!... 怎么不说很喜欢我办的北大 [偷笑] ... 这样迷糊以前是怎么通过历史考试的呀!历史上这么多人名要记。", "created_at" : "Wed
Jun 11 08:57:29 +0800 2014", "mlevel" : 0, "idstr" : "3720199951556592", "mid" : "3720199951556592", "visible" : { "type" : 0, "list_id" : 0 }, "attitudes_count" : 2, "pic_urls" : [ ], "in_reply_to_screen_name" : "", "user" : { "bi_followers_count" : 99, "domain"
: "rebol", "avatar_large" : "http://tp1.sinaimg.cn/1614282004/180/40042297177/1", "verified_source" : "", "ptype" : 3, "statuses_count" : 5902, "allow_all_comment" : true, "id" : 1614282004, "verified_reason_url" : "", "city" : "1", "province" : "71", "block_app"
: 0, "follow_me" : false, "verified_reason" : "银联移动支付首席产品架构师;《编程ING》《Java夜未眠》作者", "followers_count" : 100833, "location" : "台湾 台北市", "verified_trade" : "", "mbtype" : 2, "verified_source_url" : "", "profile_url" : "rebol", "block_word" : 0, "avatar_hd" : "http://ww4.sinaimg.cn/crop.0.0.179.179.1024/6037fd14gw1ebr3jqum0wj2050050jrl.jpg",
"star" : 0, "description" : "", "friends_count" : 106, "online_status" : 0, "mbrank" : 1, "allow_all_act_msg" : true, "profile_image_url" : "http://tp1.sinaimg.cn/1614282004/50/40042297177/1", "idstr" : "1614282004", "verified" : true, "geo_enabled" : false,
"class" : 1, "screen_name" : "蔡学镛", "lang" : "zh-cn", "weihao" : "", "remark" : "", "favourites_count" : 6, "name" : "蔡学镛", "ability_tags" : "开发者", "url" : "", "gender" : "m", "created_at" : "Mon Aug 09 12:56:16 +0800 2010", "worldcup_guess" : 0, "verified_type"
: 0, "following" : true }, "in_reply_to_status_id" : "", "comments_count" : 15, "geo" : null, "id" : NumberLong("3720199951556592"), "source" : "<a href=\"http://weibo.com/\" rel=\"nofollow\">微博 weibo.com</a>" }

新浪微博API不能通过指定ID提取用户的微博内容,除非是高级授权用户,我这样的屌丝没有这样的福啊。抓取少量用户可以将抓取的用户全部关注后然后通过授权用户抓取其本身和关注好友的微博。可行性不大。大量用户的微博数据获取似乎只有写爬虫解析页面了。

Python调用微博API,布布扣,bubuko.com

时间: 2024-12-26 12:54:56

Python调用微博API的相关文章

使用Python调用Flickr API抓取图片数据

Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据. 首先需要先去Flickr注册成为其开发者,创建应用,获得API_KEY和API_SECRET,其API网址在:https://www.flickr.com/services/api/ Flickr提供了多种开发工具进行使用.这里我们使用Python开发工具.官方推荐的开发工具是Beej’s Python

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

python调用zabbix api接口实时展示数据

近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控

(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌

访问zabbix api的URL是: http://x.x.x.x/zabbix/api_jsonrpc.php x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RESTClient进行登录 在json请求的正文中,具有以下属性: jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0; me

Python调用ansible API系列(四)动态生成hosts文件

方法一:通过最原始的操作文件的方式 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 通过操作文件形式动态生成ansible的hosts文件 """ import sys class Inventory: def __init__(self): # ansible的hosts文件路径 self._hostsfile = "./aaa" self._data = self._ge

Python调用Windows API函数编写录音机和音乐播放器

功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. . 参考代码: ? 运行界面: ? 原文地址:https://www.cnblogs.com/7758520lzy/p/12149931.html

[PHP] 调用微博API 发微博OAuth2.0

在实际测试中出现很多问题, 第一就是按照文档调用ACCESS_TOKEN的时候费老劲啦,因为是编辑线上的,有好多中文空格,没有看出来!整了好久! 第二个就是在调用api发微博的时候出现乱码!必须把发送内容转化成URLcode的格式! 还有就是在index.php文件标红的$URL地址传输的时候问题! 下面看码吧,还有就是封装好的伪造表单提交curl.class.php的类! 文件:weibo.php 1 <!DOCTYPE html> 2 <html lang="en"

Python 调用 Ansible API 简例

如下是ad-hoc模式下的调用方式:ansible [模块] [选项] [主机资产] #!/usr/bin/env python import json import shutil from collections import namedtuple from ansible.parsing.dataloader import DataLoader from ansible.vars.manager import VariableManager from ansible.inventory.ma

py3 调用微博api实现自动发布评论

新浪微博的授权机制目前主要有3种应用场景: Web应用 移动应用 站内应用 本文主要介绍Web应用如何授权.获取Access Token. 步骤一:添加网站 进入新浪微博开放平台,点击”我的应用”,选择“网页应用”,填写相应的信息后提交.(基本信息,身份验证) 步骤二:Oauth2.0授权设置 应用创建完后可以在“我的应用”中查看信息,在“应用信息”--“高级信息”中可以设置网站的授权回调页和取消授权回调页. 授权回调页非常重要,一定要填写正确,当用户授权成功后会回调到此页面,传回一个“code