我正在用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)
答案 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', ...])