質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

3002閲覧

MongoDBでエラー uncaught exception: SyntaxError: unexpected token: identifier :

monmon2

総合スコア17

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/05/26 02:10

スクレイピング初学者です。

pythonでyoutubeの動画情報をスクレイピングし、
MongoDBに格納して検索をするコードを入れたのですが、
MongoDBを起動して、下記のコードを入力するとエラーが出て
前に進めません。どなたかエラーの解消方法を教えてください

forego run python <ファイルパス>
uncaught exception: SyntaxError: unexpected token: identifier :

@(shell):1:7

python3

1from settings import YOUTUBE_API_KEY 2import os 3import logging 4from typing import Iterator, List 5 6from apiclient.discovery import build 7from pymongo import MongoClient, ReplaceOne, DESCENDING 8from pymongo.collection import Collection 9 10YOUTUBE_API_KEY = os.environ.get('YOUYUBE_API_KEY') 11logging.getLogger('googleapiclient.discovery_cache').setLevel(logging.ERROR) 12 13def main(): 14 mongo_client = MongoClient('location', 27017) 15 collection = mongo_client.youtube.videos 16 17 for items_per_page in search_videos('手芸'): 18 save_to_mongodb(collection, items_per_page) 19 20 show_top_videos(collection) 21 22 23def search_videos(query: str, max_pages: int=5) -> Iterator[List[dict]]: 24 youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY) 25 26 search_request = youtube.search().list( 27 part='id', 28 q=query, 29 type='video', 30 maxResults=50, 31 ) 32 33 i = 0 34 while search_request and i < max_pages: 35 search_response = search_request.execute() 36 video_ids = [item['id']['videoId'] for item in search_response['items']] 37 38 videos_response = youtube.videos().list( 39 part='snippet,statistics', 40 id=','.join(video_ids) 41 ).execute() 42 43 yield videos_response['items'] 44 45 searche_request = youtube.search().list_next(search_request, search_response) 46 47def save_to_mongodb(collection: Collection, items: List[dict]): 48 for item in items: 49 item['_id'] = item['id'] 50 for key, value in item['statistics'].items(): 51 item['statistics'][key] = int(value) 52 53 operations = [ReplaceOne({'_id': item['_id']}, item, upsert=True) for item in items] 54 result = collection.bulk_write(operations) 55 logging.info(f'Upserted {result.upserted_count} documents.') 56 57def show_top_videos(collection: Collection): 58 for item in collection.find().sort('statistics.viewCount', DESCENDING).limit(5): 59 print(item['statistics']['viewCount'], item['snippet']['title']) 60 61if __name__ == '__main__': 62 logging.basicConfig(level=logging.INFO) 63 main()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

os.environ.get('YOUYUBE_API_KEY')

これが原因かどうかは知りませんが、こんな名前ですか?

投稿2021/05/28 03:22

technocore

総合スコア7225

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

monmon2

2021/05/28 08:20

それが、原因ではありませんでしたが、入力ミスでした。気づかなかったので助かりました!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問