我如何在python上从用户中提取特定日期的推文?

问题描述 投票:0回答:1

我试图从路透社(@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 "参数似乎不起作用,因为我的代码拉动的推文包括最新的推文。

python twitter tweepy
1个回答
1
投票

有人已经回答了这个问题。请看这里。

tweepy获取两个日期之间的推特信息


0
投票

tweepy库只支持Twitter的老版本。标准搜索API 此时,标准搜索只覆盖7天的历史。如果要搜索远至2019年11月的内容,你需要使用高级全档案搜索API,或者企业全档案搜索。这些API都是商业化的,但高级API有一个名为 "沙盒 "的免费层,也可以使用。在Python中,你可以使用 搜索微博库.

另一个答案中提到的时间线方法也是一种选择,但它将取决于从11月开始的Tweets在时间线API的范围内,它支持从今天开始回溯3200条Tweets。


0
投票

以下是两种简单的方法,我们可以提取特定时间段和特定用户的推文.解决方案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。

© www.soinside.com 2019 - 2024. All rights reserved.