我试图从路透社(@reuters)twitter账户下载2019年11月的推文。
我在python上使用tweepy,这是我的代码。
pip install tweepy
import tweepy as tw
#Keys
consumer_key = "..."
consumer_secret = "..."
access_token = "..."
access_token_secret = "..."
# Login
auth = tw.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tw.API(auth, wait_on_rate_limit=True)
#Get user's tweets
tweets = tw.Cursor(api.user_timeline,
id="reuters",
lang="en",
since="2019-11-01",
until="2019-11-30").items()
all_tweets = [tweet.text for tweet in tweets]
all_tweets[:100]
"until "参数似乎不起作用,因为我的代码拉动的推文包括最新的推文。
有人已经回答了这个问题。请看这里。
以下是两种简单的方法,我们可以提取特定时间段和特定用户的推文.解决方案1:使用TwitterAPI.正如andy_piper所提到的,你需要高级或沙盒访问,高级帐户太贵了。除非你不是从twitter上提取大量的语料,否则拥有免费的沙盒账户就足够了。你可以简单地启用沙盒账户,使用 https:/developer.twitter.comenpricingaaa-all。 这将使您在有限的请求次数下访问存档。
创建连接到twitter账户的开发环境标签:进入twitter账户的开发环境,为沙盒创建相应的标签,配置好标签后,下面的代码将提取相应的推文。下面的代码将提取相应的tweets,(相应地改变maxResults)
from TwitterAPI import TwitterAPI
Product = 'fullarchive'
label = 'Dev'
api = TwitterAPI(consumer_key, consumer_secret, access_token, access_token_secret)
tweets = api.request('tweets/search/%s/:%s' % (Product, label),
{'query' : 'from:reuters', 'maxResults': '10', 'fromDate':'201911010000', 'toDate':'201911300000'})
for tweet in tweets:
print(tweet['id'])
解决方案2:使用GetOldTweet3 api,我不喜欢这种方式,因为我不知道许可证的问题,但它工作得很好,甚至没有twitter的开发者帐户,但有点怀疑twitter的隐私政策,这里的代码反正。
import GetOldTweets3 as got
username = 'reuters'
count = 100
tweetCriteria = got.manager.TweetCriteria().setUsername(username)\
.setMaxTweets(count).setSince("2019-11-01")\
.setUntil("2019-11-30")\
tweets = got.manager.TweetManager.getTweets(tweetCriteria)
for tweet in tweets:
print(tweet.id,tweet.author_id,tweet.date)
参考资料。https:/pypi.orgprojectGetOldTweets3。https:/github.comgeduldigTwitterAPIblobmasterexamplespremium_search.py。