我试图获取任何包含图像的推文。但是,当我在if media in data.entities:
行中获取推文数据时,就会收到错误AttributeError: str object has no attribute entities
。
我尝试添加到行中
twitterStream = Stream (auth, listener (), include_entities = 1)
但它也不起作用
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import pprint
consumer_key = "xxxxxxxxxxxxx"
consumer_secret = "xxxxxxxxxxxxxxxxx"
access_token = "xxxxxxxxxxxxxxxxxx"
access_secret = "xxxxxxxxxxxx"
class listener(StreamListener):
def on_data(self, data):
if 'media' in data.entities:
print(data)
#for image in data.extended_entities['media']:
#print(image['media_url'])
#return(True)
def on_error(self, status):
print ("error")
print (status)
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
twitterStream = Stream(auth, listener())
tweets=twitterStream.filter(track=["#picture"])
答案 0 :(得分:0)
Tweepy将原始文本数据传递到tweepy.StreamListener
的{{1}}方法中,该方法用于处理来自API的原始数据(因此您需要解析JSON字符串并同意on_data()
对象)。
如果处理普通状态对象,则最好使用tweepy.Status
方法,但最好使用on_status()
。此方法将Tweepy的常规Status对象作为参数,因此您可以照常使用此状态对象。
所以下面的代码
on_data()
将这样打印:
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print('@on_status')
print(type(status))
print(status.text)
def on_error(self, error_code):
print('@on_error')
print(error_code)
if error_code == 420:
return False
stream = tweepy.Stream(api.auth, MyStreamListener())
stream.filter(track=["#picture"])