如何在 Python 中使用新的 Twitter API 1.1 搜索? [关闭]

Posted

技术标签:

【中文标题】如何在 Python 中使用新的 Twitter API 1.1 搜索? [关闭]【英文标题】:How do I use the new Twitter API 1.1 search in Python? [closed] 【发布时间】:2013-02-25 01:55:47 【问题描述】:

众所周知,Twitter 正在过渡到新的 API (1.1),而旧的 API (1.0) 面临停电并最终终止。

我正在使用 Python/Django 进行一个小组项目,似乎没有一个大型 Python Twitter 库使用 API 1.1。我可以直接与 API 交互而不使用 Python 接口,但由于需要使用 OAuth 登录,我遇到了问题。

所以我有两个问题。

    是否有支持 Twitter API 1.1 的 Python 库?

    如果我们直接与以下 URL 中的新 API 交互,考虑到我们需要使用 OAuth 登录,我们如何让它工作?

    网址:https://api.twitter.com/1.1/search/tweets.json?q=#freebandnames&since_id=24012619984051000&max_id=250126199840518145&result_type=mixed&count=4

【问题讨论】:

您是否尝试过搜索任何支持 Twitter API 1.1 的库? 【参考方案1】:

Twitter 模块有效。您可以使用它要求 Twitter 进行身份验证、访问 Twitter 网站、输入用户名和密码,并在您的计算机上保存令牌。

我使用此代码搜索 Twitter 状态(实时搜索与标准 Twitter 搜索有点不同)。

代码:

# -*- coding: utf-8 -*-

import os
import twitter
import json
import csv

from twitter.oauth import write_token_file, read_token_file
from twitter.oauth_dance import oauth_dance

def login():
    # Go to http://twitter.com/apps/new to create an app and get these items.
    # See also http://dev.twitter.com/pages/oauth_single_token.

    APP_NAME = 'xxx'
    CONSUMER_KEY = 'xxx'
    CONSUMER_SECRET = 'xxx'
    TOKEN_FILE = '/token.txt'

    try:
        (oauth_token, oauth_token_secret) = read_token_file(TOKEN_FILE)
    except IOError, e:
        (oauth_token, oauth_token_secret) = oauth_dance(APP_NAME, CONSUMER_KEY,
                CONSUMER_SECRET)
        print e.errno
        print e

        if not os.path.isdir('out'):
            os.mkdir('out')

        write_token_file(TOKEN_FILE, oauth_token, oauth_token_secret)

    auth=twitter.oauth.OAuth(oauth_token, oauth_token_secret,CONSUMER_KEY, CONSUMER_SECRET)
    return twitter.TwitterStream(auth = auth, secure = True)

if __name__=="__main__":
    t = login()
    res = t.statuses.filter(track = "search text")

    res_list = []
    tweetfields = set()
    for r in res:
        if len(res_list)<100:
            print len(res_list)
            res_list.append(r)
            tweetfields = tweetfields.union(r.keys())
        else:
            break

    fname = '/results.csv'
    f = open(fname,'w')
    dw = csv.DictWriter(f,fieldnames=list(tweetfields))
    dw.writeheader()

    for r in res_list:
        dw.writerow(k:v.encode('utf8') if isinstance(v,unicode) else v for k,v in r.items())
    f.close()

    print [result['text'] for result in res_list]

【讨论】:

【参考方案2】:

如果我们直接与新的 API 接口如下,考虑到我们需要使用 OAuth 登录,我们如何让它工作?

>>> import twitter
>>> client = twitter.Api(username='yourusername', password='yourpassword')
>>> update = client.PostUpdate('The Twitter API is easy')

【讨论】:

以上是关于如何在 Python 中使用新的 Twitter API 1.1 搜索? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 上使用 Tweepy 创建 Twitter 线程

如何通过 Twitter API https://api.twitter.com/1.1/direct_messages/events/new.json 发送新的直接消息?

如何通过经典 ASP 使用 Twitter 获取搜索/推文 api 1.1

Twitter数据挖掘:如何使用Python分析大数据

Twitter数据挖掘:如何使用Python分析大数据

获取新的 Twitter API 使用者和密钥