2
的StackOverflowTweepy Python代碼返回在「媒體」實體KeyError異常時鳴叫不包含圖像
的喜人我是比較新的Tweepy/Twitter的API和我有得到它返回的URL對圖像中的幾個問題。
基本上,我編寫了一段代碼,用於搜索特定hashtag的推文,然後返回tweets中存在的圖像URL實體。但是,當我發回的推文沒有任何媒體時,我遇到了一個問題。如下錯誤:
Traceback (most recent call last):
File "./tweepyTest.py", line 18, in <module>
for image in tweet.entities['media']:
KeyError: 'media'
下面是我的代碼:
for tweet in tweepy.Cursor(api.search,q="#hashtag",count=5,include_entities=True).items(5):
#print tweet.text
for image in tweet.entities['media']:
print image['media_url']
我猜我需要包住for循環在某種if語句,但是我努力讓我圍繞如何頭。
任何幫助將不勝感激。
編輯: 我想我可能已經找到了解決辦法,但我不知道它是特別優雅.....使用try /除外。
for tweet in tweepy.Cursor(api.search,q="#hashtag",count=5,include_entities=True).items(5):
#print tweet.text
try:
for image in tweet.entities['media']:
print image['media_url']
except KeyError:
pass
你能解釋一下如何'tweet.entities .get('media',[])'工作?有點困惑它和'tweet.entities ['media']' – Krishh
@KrishanuKonar - 'tweet.entities'是一本字典。字典有[get()方法](https://docs.python.org/3/library/stdtypes.html#dict.get),它返回所請求的鍵的值(如果存在),或者返回給定的默認值if關鍵不存在。所以'tweet.entities.get('media',[])'返回媒體項目列表,如果它存在的話,或者是一個空列表,如果它不存在的話。 'tweet.entities ['media']'如果'media'鍵存在,就可以正常工作,但如果不存在,會引發'KeyError'異常。 – Blair