【スクレイピング】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

The most popular database for modern apps
We're the creators of MongoDB, the most popular database for modern apps, and MongoDB Atlas, the global cloud database on AWS, Azure, and GCP. Easily organize, ...

・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をコピーしました