使用 tweepy 返回用户的推文

25
我正在使用 tweepy 和 Python 2.7.6 返回指定用户的推文。
我的代码如下:
import tweepy

ckey = 'myckey'
csecret = 'mycsecret'
atoken = 'myatoken'
asecret = 'myasecret'



auth = tweepy.OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)

api = tweepy.API(auth)

stuff = api.user_timeline(screen_name = 'danieltosh', count = 100, include_rts = True)

print stuff

然而,这会产生一组看起来像<tweepy.models.Status object at 0x7ff2ca3c1050>的信息。

有没有可能从这些对象中打印出有用的信息?我在哪里可以找到它们的所有属性?


2
你需要访问对象的属性。例如,status.text。以下是属性列表 - https://dev.twitter.com/docs/api/1.1/get/statuses/home_timeline - karthikr
1
以上链接已失效。请尝试访问https://dev.twitter.com/overview/api/tweets。 - Shawn Mehan
3个回答

26

很不幸,Status模型在tweepy文档中的文档非常简略。

user_timeline()方法返回一个Status对象实例列表。您可以使用dir()来探索可用的属性和方法,或查看实际实现

例如,从源代码中,您可以看到有authoruser和其他属性:

for status in stuff:
    print status.author, status.user

或者,您可以打印出_json属性值,该属性值包含API调用的实际响应:

for status in stuff:
    print status._json

那我只需要输入 print dir(stuff) 吗? - user8028
@user8028 for status in stuff: print dir(status) - alecxe
我能否使用类似的循环来打印text属性,例如 for status in stuff: print status.text 或者 dir()列出的任何其他属性? - user8028
@user8028 是的,对于每个 status 中所需的每个属性,请使用点表示法。 - alecxe
这可能与问题略有偏差,但仍然与属性相关,您是否可以直接访问用作属性的标签,还是必须解析文本属性? - user8028

5
import tweepy
import tkinter

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
# set parser=tweepy.parsers.JSONParser() if you want a nice printed json response.

userID = "userid"
user = api.get_user(userID)

tweets = api.user_timeline(screen_name=userID, 
                           # 200 is the maximum allowed count
                           count=200,
                           include_rts = False,
                           # Necessary to keep full_text 
                           # otherwise only the first 140 words are extracted
                           tweet_mode = 'extended'
                           )

for info in tweets[:3]:
    print("ID: {}".format(info.id))
    print(info.created_at)
    print(info.full_text)
    print("\n")

感谢fairyonice提供的使用Tweepy提取某人推文的方法。


1
在 Tweeter API v2 中,获取指定用户的推文非常容易,只要不超过 3200 条推文 的限制即可。有关更多信息,请参见文档
import tweepy

# create client object
tweepy.Client(
        bearer_token=TWITTER_BEARER_TOKEN,
        consumer_key=TWITTER_API_KEY,
        consumer_secret=TWITTER_API_KEY_SECRET,
        access_token=TWITTER_ACCESS_TOKEN,
        access_token_secret=TWITTER_TOKEN_SECRET,
    )

# retrieve first n=`max_results` tweets
tweets = client.get_users_tweets(id=user_id, **kwargs)
# retrieve using pagination until no tweets left
while True:
    if not tweets.data:
        break
    tweets_list.extend(tweets.data)
    if not tweets.meta.get('next_token'):
        break
    tweets = client.get_users_tweets(
        id=user_id,
        pagination_token=tweets.meta['next_token'],
        **kwargs,
    )

"tweets_list将是一个由tweepy.tweet.Tweet对象组成的列表。"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接