実現したいこと
pythonで、マップ処理中に例外が発生してしまうのですが、その時の対処方法を知りたいです。
前提
やりたいこととしては、CSVの中にyoutubeのアカウント一覧が入っており、それに紐づくデータを出そうとしています。
youtubeのアカウント名に問題があるとき(URLで入ってしまっているなど)、youtube_channel_detailが動かなくなると思うのですが、その場合には無視して処理を続けたいです。
(python初心者のため、コードの汚い部分はご容赦ください)
発生している問題・エラーメッセージ
Traceback (most recent call last): File "...teratail.py", line 24, in <module> y3 = list(map(youtube_channel_detail, accounts)) File "...teratail.py", line 15, in youtube_channel_detail return search_response['items'][0] KeyError: 'items'
該当のソースコード
python
1from apiclient.discovery import build 2 3import pandas as pd 4 5import csv 6 7def youtube_channel_detail(channel_id): 8 api_service_name = 'youtube' 9 api_version = 'v3' 10 youtube = build(api_service_name, api_version, developerKey='API_KEY') #APIキーを入れています 11 search_response = youtube.channels().list( 12 part='snippet,statistics', 13 id=channel_id, 14 ).execute() 15 return search_response['items'][0] 16 17df = pd.read_csv('youtube_2.csv', skipinitialspace=True) 18 19 20accounts = df.youtube.tolist() 21print(accounts) 22print(map(youtube_channel_detail, accounts)) 23 24y = list(map(youtube_channel_detail, accounts)) 25 26list1 = [d.get('id') for d in y] 27list2 = [d.get('statistics').get('subscriberCount') for d in y] 28dict_from_list = dict(zip(list1, list2)) 29 30with open("dict.csv", 'w') as file: 31 writer = csv.writer(file) 32 for k, v in dict_from_list.items(): 33 writer.writerow([k, v])
回答2件