我正在尝试根据关键字下载推文,这是我正在使用的那段代码,但是问题是我无法下载整个推文。它仅显示前140个字符。如何下载完整的推文?
import tweepy
import csv
import pandas as pd
####input your credentials here
consumer_key =''
consumer_secret =''
access_token =''
access_token_secret=''
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
#####United Airlines
# Open/Create a file to append data
csvFile = open(r'C:\Users\iiit\Desktop\tweets.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)
for tweet in tweepy.Cursor(api.search,q="#hashtag",count=1000,
lang="en",
since="2020-04-14").items():
print (tweet.created_at, tweet.text)
csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])
根据官方的tweepy文档:
返回状态对象(tweets)的tweepy.API方法接受一个参数,该参数可以是兼容性或扩展模式。默认参数是兼容模式。兼容模式将推文截断为140个字符。这就是您的程序当前正在执行的操作。
如果需要全文,则应使用扩展模式。传递kwag tweet_mode="extended"
声明要使用的模式。然后使用tweet.text
tweet.full_text
您的新代码应如下所示:
for tweet in tweepy.Cursor(api.search,
q="#hashtag", count=5, lang="en",
since="2020-05-07", tweet_mode="extended").items():
print (tweet.created_at, tweet.full_text)
csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8')])
我还没有测试,但是应该可以。
据我所知,有一种策略,兼容模式将推文截断为140个字符。但是此Status事件处理程序可以用于StreamListener,以打印Tweet的全文,或者如果是Retweet,则打印Retweeted Tweet的全文作为其文档。
def on_status(自身,状态):if hasattr(status,“ retweeted_status”):#检查是否转发尝试:打印(status.retweeted_status.extended_tweet [“ full_text”])除了AttributeError:打印(status.retweeted_status.text)其他:尝试:打印(status.extended_tweet [“ full_text”])除了AttributeError:打印(状态文本)
这可能对您有帮助。here