如何使用oauth2构建Python爬虫网站

5 投票
2 回答
6226 浏览
提问于 2025-04-17 11:14

我刚开始学习网页编程,想用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]

只要确保你的工作程序有这个客户端对象,你就可以顺利进行啦 :-)

撰写回答