【问题标题】:How to build a Python crawler for websites using oauth2如何使用 oauth2 为网站构建 Python 爬虫
【发布时间】:2012-02-20 18:15:27
【问题描述】:

我是网络编程新手。我想用 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

问题是,目前我必须在浏览器中输入 URL 并从重定向 URL 中提取 CODE,然后在我的程序中更新 CODE,然后再次运行。我认为可能有某种方法可以将 CODE 编码到我当前的程序中并使其自动化。

感谢任何说明或示例代码。

【问题讨论】:

    标签: python api oauth-2.0 web-crawler foursquare


    【解决方案1】:

    您应该查看python-oauth2 模块。它似乎是最稳定的东西。

    特别是,this blog post 对如何使用 Python 轻松进行 Oauth 有很好的了解。示例代码使用 Foursquare API,所以我会先检查一下。

    我最近不得不让 Dropbox 使用 oauth,and wrote this module 包含进行 oauth 交换的必要步骤。

    对于我的系统,我能想到的最简单的事情是pickle Oauth 客户端。我的博客包刚刚反序列化了腌制客户端并使用以下函数请求端点:

    get = lambda x: client.request(x, 'GET')[1]
    

    只要确保你的工作人员有这个客户端对象,你就可以开始了 :-)

    【讨论】:

    • 感谢您的关注,先生。我有一个问题,在博客中,似乎不需要“代码”来拍摄。真的吗?因为在我的库中,代码是访问令牌的必需参数。我只是更新我的代码部分。希望让问题更清楚。
    • 如果我正确阅读了您的代码,则不需要您程序中的CODE 变量;它由 Python-Oauth2 处理。
    • 我按照您推荐的博客中的步骤操作,但在执行 client.request 步骤时出现 404 Not Found 错误。我检查了代码,与 lib apiv2.py 相比。我认为这个库实际上是针对 oauth 1.0 而不是 oauth 2.0。
    • 对不起!我使用博客文章来导出我的 Dropbox 实现,但没有在 Foursquare 上尝试过。 this thread 中提到了一些有希望的方向。看起来有一个 python-oauth2 here 的分支,确实支持 oauth2。
    【解决方案2】:

    您不必每次都这样做。他们会给你一个token,这对 X 小时/天很有用。最终你会得到 403 http 代码,你需要重新认证

    【讨论】:

    • 我确实在“bla bla bla”部分获得了一个令牌,类似于 autu.set_token(CODE) 来获得授权。但是每个令牌请求服务器都有限制。我想抓取用户的关系及其场所。在抓取了 20 个用户之后,令牌过期,我必须申请一个新的,这似乎花费了很多请求。由于获取令牌需要“代码”,因此我必须使用我的个人帐户获取授权。那是我尝试自动转换的部分。或者我想知道是否有其他方法可以在没有“代码”和令牌的情况下抓取数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多