

【やりたいこと】スクレイピングしたデータをMongoDBに保存してみたい!
これまでのスクレイピング記事では、データをPCの共有フォルダに保存していました。
今回は、スクレイピングしたデータを共有フォルダではなく、データベース(MongoDB)に保存してみます。
【10分でできる】はじめてのMongoDB
※ダウンロード時間は10分の中に含まれていません。
0.概要
MongoDBとPyMongoをインストールした後、Pythonスクリプトファイルを作成し、実行します。最後に、今回使用したコードの一部を解説いたします。
1.使用したもの
・Virtual box
・Vagrant

・Term Term
・Python3.4
・MongoDB

・PyMongo
2.手順
※下記の記事の内容を完了しているものとして、進めていきます。


①MongoDBとPyMongoのインストール
#MongoDB インストール $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 $ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list $ sudo apt-get update $ sudo apt-get install -y mongodb-org $ mongod --version
上記を実行して、MongoDBのインストールしましょう。
インストール後の確認のためmongod –versionを実行しましょう。
※参考
# MongoDBの起動確認と起動方法 $ sudo service mongod status #起動確認 mongod start/running,process ○○ $ sudo service mongod start #起動方法
上記のコードを実行し、MongoDBが起動しているか確認します。
起動していなければ、sudo service mongod startを入力して、起動させましょう。
$ pip install pymongo
上記を記入し、PyMongoをインストールします。
②Pythonスクリプトファイルの作成
import lxml.html from pymongo import MongoClient # HTMLファイルを読み込み、getroot()メソッドでHtmlElementオブジェクトを得る。 tree = lxml.html.parse('index.html') html = tree.getroot() client = MongoClient('localhost',27017) db = client.scraping # scrapingデータベースを取得する。 collection = db.links # linksコレクションを取得する。 # このスクリプトを何回実行しても同じ結果になるようにするため、コレクションのドキュメントをすべて削除する。 collection.delete_many({}) # cssselect()メソッドでa要素のリストを取得して、個々のa要素に対して処理を行う。 for a in html.cssselect('a'): # href属性とリンクのテキストを取得して保存する。 collection.insert_one({ 'url': a.get('href'), 'title': a.text, }) # コレクションのすべてのドキュメントを_idの順にソートして取得する。 for link in collection.find().sort('_id'): print(link['_id'], link['url'], link['title'])Pythonクローリング&スクレイピング サンプルコードsave_mongo.pyを使用
上記のコードを作成します。
コードの解説は、④で行います。
③実行
python save_mongo.py
上記を実行すると、URLとリンクのテキストがMongoDBに保存されます。
④コード解説
ここでは、②で記載したコードを一部解説します。
client = MongoClient('localhost',27017) db = client.scraping # scrapingデータベースを取得する。 collection = db.links # linksコレクションを取得する。
上記で着目してほしい点は、以下の2つです。
・db = client.scraping
・collection = db.links
MongoDBの専門用語を使わずに説明すると、
「scrapingフォルダの中のcollectionフォルダにlinksというファイルを作成します。」という意味だと考えてください。
つまり、
scraping > collection > links
こんな感じです。
今回は、抽出したデータをcollectionフォルダ内(links)に保存しました。
3.追記
いくら文字で説明されても、分かりづらいですよね。
MongoDBには、GUIクライアントがあるので、実際に保存されている場所を確認することができます。
次回の記事をお楽しみください。
【最後に】参考図書の紹介
以下の書籍は、私がPythonスクレイピングを勉強するにあたって、使用した書籍です。
「Python逆引き大全」は、秀和システムの技術書読み放題サービス「10×Eng」で読めます。最初の2週間は無料、それ以降は、月額900円で利用できます。
「プログラミング超初心者が初心者になるためのPython入門」はkindle unlimitedで読めます。
コメント