获取转发的用户名?

2 投票
3 回答
1834 浏览
提问于 2025-04-17 19:15

我想知道如何用Python-Twitter查看我时间线上每个转发的用户名。现在我有的代码可以获取时间线,但没有转发的用户名:

import twitter
api = twitter.Api(xxxxxx)
statuses = api.GetUserTimeline('username', include_rts=True)
for tweet in statuses:
    print tweet

我认为你可以用的方法是GetTweets,这个方法需要一个状态ID。我不太确定怎么把时间线调用中的状态ID传递给GetRetweets调用?

提前谢谢你!

3 个回答

0

或者你也可以试试这个。

import twitter

t = twitter.Api(...)

statuses = t.GetUserTimeline('username', include_rts=True)

for tweet in statuses:
    retweets = t.GetRetweets(tweet.GetId())
    users = [retweet.GetUser().GetScreenName() for retweet in retweets]
    print tweet.GetId(), users
    print tweet.GetRetweets()
0

我想补充一下@alecxe的回答,但用评论的话没法贴太多代码。在我的应用中,我发现检查一下推文是否有转发再去获取那些转发是很有用的。这样可以在使用API时节省一点配额。我把@alecxe的代码修改了一下,以满足我的需求:

import twitter, json

t = twitter.Api(...)

statuses = t.GetUserTimeline('username', include_rts=True)

for tweet in statuses:
    json_tweet = json.loads(str(tweet))

    rts = 0
    try:
        rts = json_tweet['retweet_count']
    except:
        rts = 0

        if rts > 0:
            retweets = t.GetRetweets(tweet.GetId())
            users = [retweet.GetUser().GetScreenName() for retweet in retweets]
            print tweet.GetId(), users
1

试试这个:

import twitter

t = twitter.Api(...)

statuses = t.GetUserTimeline('username', include_rts=True)

for tweet in statuses:
    retweets = t.GetRetweets(tweet.GetId())
    users = [retweet.GetUser().GetScreenName() for retweet in retweets]
    print tweet.GetId(), users

希望这能帮到你。

撰写回答