【问题标题】:Mining All Tweets and Retweets from A Specified User's Timeline Using Tweepy使用 Tweepy 从指定用户的时间线上挖掘所有推文和转推
【发布时间】:2017-11-15 01:19:53
【问题描述】:

我正在尝试挖掘 WomensMarch 的 Twitter 时间线上的每一条推文。

我一直在尝试使用 Tweepy 和 Python 3.x,但我似乎无法挖掘超过 3219 条推文。有什么方法可以挖掘 Twitter 上指定用户自创建帐户以来曾经转发或发过推文的 /every/ 推文?

这是我目前使用的代码:

import pandas as pd
import tweepy
from tweepy import OAuthHandler
import time 

consumer_key = "--"
consumer_secret = "--"
access_token = "--"
access_secret = "--"

authHandler = OAuthHandler(consumer_key, consumer_secret)
authHandler.set_access_token(access_token, access_secret)
twitterAPI = tweepy.API(authHandler, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

womensMarchTwitter = twitterAPI.get_user('womensmarch')
minedTwitterDataFrom_womensMarchTwitter = pd.DataFrame(columns=["Tweet Text", "Tweet Created On"])

def MineTimelineData(idToMine):
    cursor = tweepy.Cursor(twitterAPI.user_timeline, id=idToMine)
    while(tweepy.Cursor(twitterAPI.user_timeline).items() != None):
        try:
            for page in cursor.pages():
                for tweet in page:
                    yield tweet
        except tweepy.RateLimitError:
            print("Rate limit reached! Waiting 15 minutes...")
            time.sleep(60 * 15) #wait 15 minutes (900 seconds)

minedData = MineTimelineData(womensMarchTwitter.id)

numberOfTweetsMined = 0
for tweet in minedData:
    print(tweet.text)
    print("Posted on: ", tweet.created_at)
    minedTwitterDataFrom_womensMarchTwitter.loc[numberOfTweetsMined, "Tweet Text"] = tweet.text
    minedTwitterDataFrom_womensMarchTwitter.loc[numberOfTweetsMined, "Tweet Created On"] = tweet.created_at
    numberOfTweetsMined = numberOfTweetsMined + 1

minedTwitterDataFrom_womensMarchTwitter.to_csv(r"PATH") 
print(numberOfTweetsMined)
print("\n \n \n Finished Mining Tweets!")

【问题讨论】:

  • 没什么大不了的,但从术语上讲,听起来您正在尝试“获取”。 “挖掘”通常是指在数据中找到某种洞察力,比如表达了什么情绪。 :)
  • @Chet,啊,其实我不知道。谢谢提供信息! :D

标签: python python-3.x tweepy


【解决方案1】:

根据Twitter API docs,您可以使用user_timeline 一次返回的最多记录将是 3,200。

来自文档:

此方法最多只能返回用户最近的 3,200 条推文。用户对其他状态的本机转推包含在此总数中,无论在请求此资源时是否将include_rts 设置为false

老实说,我不确定你是如何获得这 19 条额外推文的,但这绝对是规范的一部分。

【讨论】:

  • 好的,感谢有关 user_timeline 的信息!你知道我可以用来从用户那里获取所有推文和转推的 API 方法吗?
  • 据我所知,您不能作为第三方这样做 - 您必须让用户下载他们所有的推文,然后将它们上传到您的服务。
猜你喜欢
  • 2020-12-03
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 2014-05-05
  • 1970-01-01
  • 2014-02-16
相关资源
最近更新 更多