簡體   English   中英

帶Tweepy的流:“ str”對象沒有屬性“實體”

[英]Stream with Tweepy : 'str' object has no attribute 'entities'

我試圖獲取任何包含圖像的推文。 但是當我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"]) 

Tweepy將原始文本數據傳遞給tweepy.StreamListeneron_data()方法,該方法用於處理來自API的原始數據(因此您需要解析JSON字符串並tweepy.Status對象)。

如果處理正常狀態對象,則最好使用on_status()方法,但要使用on_data() 此方法將Tweepy的常規Status對象作為參數,因此您可以照常使用此status對象。

所以下面的代碼

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"])

將打印如下:

@on_status
<class 'tweepy.models.Status'>
test1! #picture
@on_status
<class 'tweepy.models.Status'>
This is test picture tweet2! #picture

另請參閱: 使用Tweepy進行流傳輸— tweepy 3.6.0文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM