こんにちは,しまさん(@shimasan0x00)です.
Pythonを本格的に触り始めてからというものエラーによる嵐に苛まれています.
今回は『Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド』においてMongodb周りのエラーが多々ありましたので対処したいと思います.
なお,誤植やライブラリの仕様変更における変更なんかは以下のページを見てください.
環境
macOS Mojave(10.14)
pyenv Python3.6.7
pymongo 3.7.2
MongoDB shell version v4.0.3
スポンサーリンク
Mongodbのインストール
macの場合はHomebrewでインストールできます.
brew install mongodb
p84でインストールしたあとに
mkdir -p /data/db
としてそのままMongoDB動かそうとしてますけど起動しません.
以下のコマンドも実行しましょう.
sudo chown -R $USER /data/db
スポンサーリンク
Mongodbの起動・終了
書籍ではフォアグラウンドで起動させるために
mongodb
としています.
ですがbrewでインストールしているかたは
brew service start mongodb #start
brew service stop mongodb #end
でも操作できますので覚えておくといいかもしれません.
YouTube APIを利用してMongodbに保存するプログラム
p151〜にあるサンプルプログラムでエラーが起きました.
save_youtube_video_metadata.pyです.
pymongo.errors.BulkWriteError: batch op errors occurred
エラーをよく見ると以下のあたりでエラーが起きているとのことです.
save_to_mongodb(collection, items_per_page)
result = collection.insert_many(items)
どうすれば…と思ったらstackoverflowにいい感じのものがありました.
insert_many()の引数に「ordered=False」を追加すると解決するときもあるよとのことでした.
なので,
#save_to_mongodb関数
result = collection.insert_many(items, ordered=False)
としてあげて実行すると…
Inserted 50 docments
Inserted 50 docments
Inserted 50 docments
Inserted 50 docments
Inserted 50 docments
29736742 Claudia tira el ipad de Gisele al agua!! By Las Ratitas
19825031 MAGIC IPAD
9451224 Макс РАЗБИЛ ПЛАНШЕТ iPad! Катя ВСЕ ИСПОРТИЛА!
7124290 Introducing the new iPad Pro — Apple
7082669 Ipad In The Swimming Pool Prank On My Sister Sophia!
ちゃんと結果が出ました!!(クエリは’iPad’にしています)
スポンサーリンク
MongoDBのGUIツールの紹介(NoSQLBooster for MongoDB)

無料で使えるGUIツールないかなと思って探したときに見つけたGUIツールです.
DBをこうやって簡単に可視化してくれると理解が深まるのでいいなと思っています.
さいごに
今回は『Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド』におけるMongoDB周りのエラー解決をしました.
周りの人よりも頻繁にエラーとこんにちはしてる気がしてなりません…笑.
スクレイピングは楽しいので頑張ります!(もうエラー起きないでくれ(無理))