前言:
眼前各位老铁们对“python获取微博”都比较关切,小伙伴们都想要分析一些“python获取微博”的相关内容。那么小编在网摘上汇集了一些有关“python获取微博””的相关文章,希望你们能喜欢,大家一起来了解一下吧!上次准备用selenium + python 来模拟登陆新浪微博(这种方式太不好了)。最后我卡在了验证码环节。对于我这种菜鸟来说,新浪实在太不友好了。一点都不考虑我的感受。附上模拟登陆代码。
问题出在获取验证码图片的环节,这里新浪不知道怎么做的。地址相同,但是每次访问得到的验证码不同,导致我无法获取到正确的验证码。本来准备用selenium 截屏获取到验证码交给百度Orc来识别,发现百度对于新浪的这种验证码,识别正确率低的可怕。
So, 我放弃了。改用官方的提供的正确做法。这样又不会被封号。还是挺不错的。官方的API基本全是 rest 接口。可以很方便的调用,获取。下面主要写一下。如何能成功的获取授权。授权完成后就可以调用新浪接口获取数据了(光明正大)。
官方的Api 还算是比较丰富。我主要使用 它们的 评论,还有搜索接口。所以我觉得挺完美的。
首先,访问这些东西,你需要有一个新浪的账号。然后点击:"微连接" 创建一个应用。
创建完成后。可以在"我的应用"中查询到:
点击应用进入后,可以看到应用的app key ,App Secret。这两个很重要,后面的授权会用到。
获取授权。这里新浪采用一种叫:OAuth2.0 的授权机制: 简单来说就是 你访问授权服务器,授权服务器给你返回一个凭证,然后你拿着这个凭证就可以访问 新浪的其他接口了。
授权服务器相当于门卫的意思。你来到一栋大厦。然后门卫给了一一个身份牌。之后你进入大厦。每进一个房间。门口的门卫都需要你提供刚进大厦的人给你的身份牌。否则则拒绝你进入。大概就是这么个意思。
长话短说直接看怎么获取授权:
授权需要自己配置一个回调地址。需要能访问。这个地址除了在参数里加,还需要写在你的应用里。也就是:
这里。我直接用 Flask 搭建了一个本地服务器:
之后借助内网穿透软件。免费的有:natapp:
穿透出去。这样我们就有了回调的地址。
接下来看官方API:
首先我们需要访问:
;response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
这个需要我们填写之前穿件应用后得到的 app key 以及我们搭建的接受回调的地址:
之后在浏览器中打开这个地址:
点击授权(我的回调函数写的打印code,所以这里直接打印出了code。地址栏你也可以获取到这个code):
之后,我们使用新浪给的第二个url:
;client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
这个 url 需要使用post 方法提交。
Code还有自己的app key ,app secret 。
填写完毕后提交:
会得到一段json格式的返回:
{ "access_token": "asdasdasdadasdasdsadda", "remind_in": "1233566966", "expires_in": 1233566966, "uid": "15666996666", "isRealName": "true"}
这就是我们最后得到的 结果。代表我们授权成功了。
接下来访问接口就简单了。我们只要把 access_token 保存下来。每次访问调用接口时带上这个就可以了。
接口测试可以使用谷歌的postman,或者新浪提供的测试工具
新浪提供了接口测试工具可以直接在线测试接口:这里我从我之前爬取的微博列表中选择了一个文章的ID 。请求后得到了新浪返回的评论结果json 串。
大概瞥了一下(1万多行的串):
这应该就是所有的评论了。
后续,我会写出我能访问调用的所有接口方法,以及解析返回的json数据。
其他的接口,调用方式,都是一样的。关键在于我们授权之后,获取到的access_token 这是验证我们身份的标志。
评论区欢迎指点,讨论。
标签: #python获取微博