今回は Python を使って Selenium を起動できそのままスクレイピングした内容をDjangoに保存して、管理・公開できるというツールの紹介です。
機械学習の教師データを用意するために Python と Selenium を使ってスクレイピングをしよう!
と 考える人は多いのではないでしょうか?
その後、作成したデータをデータベースに入れて、加工して、ラベルを付けて。。。
と、やることがたくさんあります。
その中でも今回はラベル付けを行いやすいように Django を通してウェブページでラベルの設定を行うことを想定したツールを作ってみました。
ウェブページで公開できれば外注化もできますからね!
ただのラベル付けをするだけのサイトなのでいらないような気はするのですが、HTTPS化もできるようにしています。
その他にも、スクレイピングをしてきて何かしら加工をして、ウェブページとして公開するのも一つかと思います。
このツールはDocker Compose を利用しているのでDocker と Docker Compose をインストールされている環境を想定しています。
Dockerを全く触ったことがない人はこちらのツイートをご参考ください。
Docker という単語を聞いたことはあるけど触ったことのない人におすすめ。
Dockerはどんなもので、どんな使い方をするのかが12分で分かる動画です。
説明は英語ですが英語が苦手な人は日本語字幕でも見れます。https://t.co/M9empHoGwh#Docker #DevOps #インフラ #サーバー
— エンジニアの眠れない夜 (@sleepless_se) August 9, 2018
Djangoを起動してみる
まずはリポジトリからクローンします。
git clone https://gitlab.com/sleepless-se/selenium-with-django.git
作成されたフォルダの中に移動します。
cd selenium-with-django
docker-composeを起動します。
docker-compose -up -d
http://localhost:8080 を開きます。
無事にDjangoのトップページが表示されればDjangoの準備は完了です!
後はお好みに合わせてDjangoを設定してください。
django-uwsgi-nginxの中にある source_capture というフォルダがDjangoプロジェクトのディレクトリです。
アプリケーションは作成していないので、後はお好みで!
Seleniumを起動してみる
続いてSeleniumを起動します。
こちらのコードを実行してdjangoのコンテナの中に入ります。
docker exec -it django /bin/bash
コンテナの中に入ったら下記を実行します。
main.py というサンプルファイルを置いているのでこれを実行します。
python3 /code/source_capture/script/main.py
ターミナルに
take a screenshot show title Welcome to Python.org
と表示されればSeleniumの起動成功です!
のタイトルを取得してprint()しています。
いっしょにスクリーンショットも撮っているので source_capture の中にscreenshot.pngが作成されていればこちらも成功です!
docker-compose(Django Selenium)の止め方
docker-compose stop
で停止します。
コンテナも一緒に削除する場合は
docker-compose down
で停止と削除が同時にできます。
Seleniumがエラーで停止した場合
エラーで停止するとSeleniumがそれ以降動かなくなります…
なので、再起動が必要です。
docker-compose restart
で再起動できます。
まとめ
こんな感じで、すごく簡単にSelenium × Djangoを利用できます。
Djangoとデータベースもすでに接続済みなのですぐに使い始められます。
「Seleniumで取ってきた情報をデータベースに保存してDjangoで利用する」この流れが簡単にできると便利なのではないかと思い作成しました。
面白そうと思った方はぜひ使ってみてくださいね^^
補足
データベースの接続時に
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'db' ([Errno 8] nodename nor servname provided, or not known)")
というエラーが出た場合はデータベースのホストを’127.0.0.1’に変更してご利用ください。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'maria_db', 'USER': 'root', 'PASSWORD': 'root', 'HOST': '127.0.0.1', 'PORT': '3306', } }
コメントを残す