【スクレイピング】MongoDBに保存

スクレイピング
スクレイピング準備記事

【やりたいこと】スクレイピングしたデータをMongoDBに保存してみたい!

これまでのスクレイピング記事では、データをPCの共有フォルダに保存していました。

今回は、スクレイピングしたデータを共有フォルダではなく、データベース(MongoDB)に保存してみます。

【10分でできる】はじめてのMongoDB

※ダウンロード時間は10分の中に含まれていません。

0.概要

MongoDBとPyMongoをインストールした後、Pythonスクリプトファイルを作成し、実行します。最後に、今回使用したコードの一部を解説いたします。

1.使用したもの

・Virtual box

Oracle VM VirtualBox

・Vagrant

Vagrant by HashiCorp
Vagrant enables users to create and configure lightweight, reproducible, and portable development environments.

・Term Term

Tera Term (テラターム) プロジェクト日本語トップページ - OSDN
Tera Term は、オリジナルの Tera Term Pro 2.3 の原作者公認の後継版です。オープンソースで開発されており、UTF-8 表示に対応しています。 また、SSH1 対応モジュール TTSSH を拡張し、SSH2 プロトコルをサポートしています。

・Python3.4

・MongoDB

MongoDB | Build Faster. Build Smarter.
Get your ideas to market faster with the leading modern data platform. MongoDB makes working with data easy.

・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で読めます。

 

コメント

タイトルとURLをコピーしました