【发布时间】:2019-03-06 13:27:24
【问题描述】:
我正在尝试从用户定义的 Twitter 个人资料中抓取推文。阅读了以前的帖子后,我了解到 Twitter JSON 有一个用于扩展推文的部分。我已将tweet_mode='extended' 添加到我的api.user_timeline 部分并将.text 更改为.full_text.
但是,我仍然收到截断的推文。我知道转推具有 full_text 属性,但我正在抓取时间线,而不是将推文与转推分开。
有没有办法普遍查询推文并检索全文版本。我在下面包含了我的代码。
screen_name_list = ['@x']
for name in screen_name_list:
user = api.get_user(name)
#initialize a list to hold all the tweepy Tweets
alltweets = []
#make initial request for most recent tweets (200 is the maximum allowed count)
new_tweets = api.user_timeline(screen_name = name, count = 200,tweet_mode='extended', include_rts=True)
#save most recent tweets
alltweets.extend(new_tweets)
#save the id of the oldest tweet less one
oldest = alltweets[-1].id - 1
#keep grabbing tweets until there are no tweets left to grab
while len(new_tweets) > 0:
print 'getting tweets before %s' % (oldest)
#all subsiquent requests use the max_id param to prevent duplicates
new_tweets = api.user_timeline(screen_name = name, count=200, max_id=oldest, tweet_mode='extended')
#save most recent tweets
alltweets.extend(new_tweets)
#update the id of the oldest tweet less one
oldest = alltweets[-1].id - 1
print "...%s tweets downloaded so far" % (len(alltweets))
#transform the tweepy tweets into a 2D array that will populate the csv
outtweets = [[tweet.id_str, tweet.created_at, tweet.full_text.encode('utf-8')] for tweet in alltweets]
tweet_time = [index[1] for index in outtweets]
tweet_list = [index[2] for index in outtweets]
【问题讨论】:
-
你能说明你是如何截断推文的吗?使用
tweet_mode='extended',检查alltweets中的一些推文似乎都有'truncated': False,而tweet.full_text似乎有完整的推文内容,没有被截断。即使outtweets[0][2]的内容与alltweets[0].full_text的全文匹配,更多信息或您获得的结果示例也会有所帮助。 -
我可以获取用户生成的推文全文。但是,如果用户转发一条推文,则转发的推文限制为 140 个字符,即我没有得到完整的转发。
-
感谢您的解释,我无法重现该问题。
标签: python twitter tweepy tweets