如何使用oauth2构建Python爬虫网站
我刚开始学习网页编程,想用Python写一个爬虫,来抓取Foursquare上的社交图谱。
我已经用apiv2
库做了一个“手动”控制的爬虫,主要的方法是这样的:
def main():
CODE = "******"
url = "https://foursquare.com/oauth2/authenticate?client_id=****&response_type=code&redirect_uri=****"
key = "***"
secret = "****"
re_uri = "***"
auth = apiv2.FSAuthenticator(key, secret, re_uri)
auth.set_token(code)
finder = apiv2.UserFinder(auth)
#DO SOME REQUIRES By USING THE FINDER
finder.finde(ANY_USER_ID).mayorships()
bla bla bla
现在的问题是,我每次都得在浏览器里输入网址,然后从重定向的链接中获取一个代码(CODE),再把这个代码更新到我的程序里,然后重新运行。我觉得应该有办法把获取代码的过程写进我的程序里,让它变得自动化。
如果有人能给点指导或者示例代码,我会非常感激。
2 个回答
0
你不需要每次都这么做。他们会给你一个token
,这个token
在X小时或一天内有效。过一段时间后,你会收到403的错误代码,那时候你就需要重新登录了。
3
你可以看看这个叫做 python-oauth2 的模块。它看起来是目前最稳定的选择。
特别是,这篇 博客文章 对如何用Python轻松实现Oauth做了很好的介绍。里面的示例代码使用了Foursquare的API,所以我建议你先看看这个。
我最近需要在Dropbox上实现Oauth,于是我写了这个模块,里面包含了进行Oauth交换所需的步骤。
对于我的系统,我想到的最简单的方法就是用 pickle
来保存Oauth客户端。我的博客程序只是把这个保存的客户端反序列化,然后用下面的函数请求接口:
get = lambda x: client.request(x, 'GET')[1]
只要确保你的工作程序有这个客户端对象,你就可以顺利进行啦 :-)