【问题标题】:Python Twitter Streaming TimelinePython Twitter 流媒体时间线
【发布时间】:2017-06-18 10:37:27
【问题描述】:

****我正在尝试从特定用户的 twitter 时间线获取信息,并且我正在尝试以 Json 格式打印输出,但是我得到一个 AttributeError: 'str' object has no attribute '_json'。我是 python 新手,所以我在尝试解决这个问题时遇到了麻烦,所以任何帮助都将不胜感激。 ****

下面显示了我目前拥有的代码:

from __future__ import absolute_import, print_function

import tweepy
import twitter

def oauth_login():
    # credentials for OAuth
    CONSUMER_KEY = 'woIIbsmhE0LJhGjn7GyeSkeDiU'
    CONSUMER_SECRET = 'H2xSc6E3sGqiHhbNJjZCig5KFYj0UaLy22M6WjhM5gwth7HsWmi'
    OAUTH_TOKEN = '306848945-Kmh3xZDbfhMc7wMHgnBmuRLtmMzs6RN7d62o3x6i8'
    OAUTH_TOKEN_SECRET = 'qpaqkvXQtfrqPkJKnBf09b48TkuTufLwTV02vyTW1kFGunu'

    # Creating the authentication
    auth = twitter.oauth.OAuth( OAUTH_TOKEN,
                                OAUTH_TOKEN_SECRET,
                                CONSUMER_KEY,
                                CONSUMER_SECRET )
    # Twitter instance
    twitter_api = twitter.Twitter(auth=auth)
    return twitter_api

# LogIn
twitter_api = oauth_login()
# Get statuses
statuses = twitter_api.statuses.user_timeline(screen_name='@ladygaga')
# Print text 

for status in statuses:
    print (status['text']._json)

【问题讨论】:

  • “试图以 Json 格式打印输出”。您是否有特定的原因要这样做?通常,Json 用于存储,而不是输出。
  • 你弄错了 - status['text']._json 应该是 status._json['text']
  • 好吧,基本上我的导师希望将输出放在一个列表中,这就是为什么我在尝试打印输出时尝试添加“._json”但它给出了错误@patrick
  • 你也不应该泄露你的凭据 - 进入 twitter 应用程序仪表板并尽快重置它们,你已经通过公开泄露它们来破坏它们。
  • 您可以为它们创建environment variablesLinuxWindows),然后使用 Python 的os.environ 读取它们,而不是将您的凭据放入代码中。

标签: python json twitter-oauth tweepy twitter-streaming-api


【解决方案1】:

您似乎将tweepytwitter 混淆了,结果可能对方法有些混淆。来自您的代码的tweepy 的身份验证过程应如下所示:

import tweepy

def oauth_login():
    # credentials for OAuth
    consumer_key = 'YOUR_KEY'
    consumer_secret = 'YOUR_KEY'
    access_token = 'YOUR_KEY'
    access_token_secret = 'YOUR_KEY'

    # Creating the authentication
    auth = tweepy.OAuthHandler(consumer_key,
                               consumer_secret)
    # Twitter instance
    auth.set_access_token(access_token, access_token_secret)
    return tweepy.API(auth)

# LogIn
twitter_api = oauth_login()
# Get statuses
statuses = twitter_api.user_timeline(screen_name='@ladygaga')

# Print text
for status in statuses:
    print (status._json['text'])

如前所述,如果您想要创建推文列表,您可以执行以下操作,而不是 # Print text 之后的所有操作

# Create a list
statuses_list = [status._json['text'] for status in statuses]

而且,正如 cmets 中所述,您不应该每个人都公开提供您的密钥。 Twitter 允许您重置它们,我建议您尽快进行 - 编辑您的帖子是不够的,因为人们仍然可以阅读您的编辑历史记录。

【讨论】:

  • 嘿,谢谢,是的,我现在将其重置。我使用了您提供的代码,我在 consumer_key 上收到了一个识别错误。发生了什么,因为我看不出我替换它的任何错误:/ @ason​​gtoruin
  • @Arpit 似乎是一个错字 - 检查您是否在 def oauth_login(): 末尾包含冒号?
  • 是的,我仔细检查了一遍,当我看不到任何拼写错误时,出现这个错误真是太奇怪了
  • @Arpit 您现在可以提供您的代码吗,因为它已通过上传到pastebin 之类的地方进行了更改?如前所述,请确保先编辑/更改您的密钥!
  • @Arpit 您没有正确复制数据 - # credentials... 行需要与# Creating the authentication 行保持间距,如答案所示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多