在tweepy中返回实际的推文?

时间:2011-10-10 14:30:28

标签: python twitter tweepy

我正在用tweepy写一个推特程序。当我运行此代码时,它会为它们打印Python ...值,例如

<tweepy.models.Status object at 0x95ff8cc>

哪个不好。我如何获得实际的推文?

import tweepy, tweepy.api
key = XXXXX
sec = XXXXX

tok  = XXXXX
tsec = XXXXX

auth = tweepy.OAuthHandler(key, sec)
auth.set_access_token(tok, tsec)
api = tweepy.API(auth)

pub = api.home_timeline()
for i in pub:
        print str(i)

5 个答案:

答案 0 :(得分:23)

通常,您可以使用Python中的dir()内置来检查对象。

看起来Tweepy文档在这里非常缺乏,但我想象Status对象反映了Twitter的REST状态格式的结构,请参阅(例如)https://dev.twitter.com/docs/api/1/get/statuses/home_timeline

所以 - 试试

print dir(status)

查看状态对象中的内容

或者只是说,

print status.text
print status.user.screen_name

答案 1 :(得分:3)

查看 getstate ()get方法,该方法可用于检查返回的对象

for i in pub:
    print i.__getstate__()

答案 2 :(得分:1)

api.home_timeline()方法返回20个tweepy.models.Status对象的列表,这些对象对应前20条推文。也就是说,每个Tweet都被视为Status类的对象。每个Status对象都有许多属性,如id,text,user,place,created_at等。

以下代码将打印推文ID和文本:

tweets = api.home_timeline()
for tweet in tweets:
  print tweet.id, " : ", tweet.text

答案 3 :(得分:1)

来自实际的推文,如果你想要特定的推文,你必须有推文ID, 并使用

tweets = self.api.statuses_lookup(tweetIDs)
for tweet in tweets:
  #tweet obtained
  print(str(tweet['id'])+str(tweet['text']))

或者你是否想要一般的推文 使用twitter stream api

class StdOutListener(StreamListener):
def __init__(self, outputDatabaseName, collectionName):
    try:
        print("Connecting to database")
        conn=pymongo.MongoClient()
        outputDB = conn[outputDatabaseName]
        self.collection = outputDB[collectionName]
        self.counter = 0
    except pymongo.errors.ConnectionFailure as e:
        print ("Could not connect to MongoDB:")
def on_data(self,data): 
    datajson=json.loads(data)
    if "lang" in datajson and datajson["lang"] == "en" and "text" in datajson:
        self.collection.insert(datajson)

        text=datajson["text"].encode("utf-8") #The text of the tweet
        self.counter += 1
        print(str(self.counter) + " " +str(text))

def on_error(self, status):
    print("ERROR")
    print(status)
def on_connect(self):
    print("You're connected to the streaming server.
l=StdOutListener(dbname,cname)
    auth=OAuthHandler(Auth.consumer_key,Auth.consumer_secret)
    auth.set_access_token(Auth.access_token,Auth.access_token_secret)
    stream=Stream(auth,l)


    stream.filter(track=stopWords)

创建一个继承自StreamListener的类Stdoutlistener 覆盖函数on_data,并以json格式返回tweet,此函数在每次获取tweet时运行 推文根据停用词进行过滤 这是你想要的推文中的单词列表

答案 4 :(得分:0)

在Tweepy Status实例上,您可以访问_json属性,该属性返回表示原始Tweet contents的dict。

例如:

type(status)
# tweepy.models.Status

type(status._json)
# dict

status._json.keys()
# dict_keys(['favorite_count', 'contributors', 'id', 'user', ...])