こんにちは。sinyです。
pythonスクレイピングの書籍を購入して勉強していますが、スクレイピングを利用すると前々からあったらいいなと思っていた書籍情報を管理するWEBアプリをDjangoで作れそうだったので実際に作ってみました。
今回は、技術的な細かい説明は割愛しますが、こんなことも割と簡単にできてしまうことが分かったので応用事例としてご紹介します。
全体構成と処理フロー概要
まずは全体構成と処理フローの概要を簡単に。
①WEBサイト(Djangoで作成)上で検索キーワードを登録しておく。
②「更新」ボタンを押すと楽天APIを使ってキーワード検索で書籍情報を検索
③検索結果を受け取りデータベースへ自動登録
④WEB上に書籍情報を表示
⑤イメージ画像をクリックすると楽天ブックスのページへリンク
全体構成は以下のような感じです。
実際に作ったデモアプリのサンプル動画です。
(動画がちょっとわかりづらいですが、「イメージ画像」の画像をクリックすると対象の楽天ページへリンクするようにしてみました)
今回は、楽天ブックスから書籍情報を自動収集することにしました。
本当はAmazonから取得したかったのですが、AmazonのAPIを使うには審査に通らないとAPIを使えないということもあり、ちょっとハードルが高かったので、すぐに利用できる楽天APIを利用しました。
ちなみに、楽天APIには42種類ものジャンルのAPIが用意されています。
どんなAPIがあるか全部一覧にしてみましたが、めちゃくちゃありますね・・・
- 楽天市場商品検索API
- 楽天市場ジャンル検索API
- 楽天市場タグ検索API
- 楽天市場ランキングAPI
- 楽天商品コード検索API
- 商品価格ナビ製品検索API
- 楽天ブックス系API
- 楽天ブックス総合検索API
- 楽天ブックス書籍検索API
- 楽天ブックスCD検索API
- 楽天ブックスCD/Blu-ray検索API
- 楽天ブックス洋書検索API
- 楽天ブックス雑誌検索API
- 楽天ブックスゲーム検索API
- 楽天ブックスソフトウェア検索API
- 楽天ブックスジャンル検索API
- 楽天トラベル系API
- 楽天トラベル施設検索API
- 楽天トラベル施設情報API
- 楽天トラベル空室検索API
- 楽天トラベル地区コードAPI
- 楽天トラベルキーワード検索API
- 楽天トラベルホテルチェーンAPI
- 楽天トラベルランキングAPI
- 楽天ブックマーク系API
- お気に入りブックマーク取得API
- お気に入りブックマーク追加API
- お気に入りブックマーク削除API
- 楽天レシピ系API
- 楽天レシピカテゴリ一覧API
- 楽天レシピカテゴリ別ランキングAPI
- 楽天Kobo系API
- 楽天Kobo電子書籍検索API
- 楽天Koboジャンル検索API
- 楽天GORA系API
- 楽天GORAゴルフ場検索API
- 楽天GORAゴルフ場詳細API
- 楽天GORAプラン検索API
- その他のAPI
- 楽天ダイナミックアドAPI
- 楽天ダイナミックアドAPI トラベル
- 楽天アフィリエイト高料率ショップAPI
利用している技術
今回のデモで使っている技術要素をあげると以下の通りです。
区分 | 利用している要素 |
WEB画面 | Django (DBはデフォルトのSQLite) |
情報をとってくる部分 |
Pythonのスクレイピング |
Pythonスクレイピング部分は、基本的なモジュール(requests,urllib)を使っているだけで、後は楽天のAPI仕様に基づいてリクエストを投げるだけです。
楽天APIの使い方は楽天APIドキュメントを参考にしました。
WEB上の更新画面を押したときに楽天APIを使って情報を取得する部分は、DjangoのViewに定義してもよいのですが、バッチ処理として自動化もしたかったのでDjangoのカスタムコマンドとして定義しました。
あとは、全体図には書いてませんが、新刊の情報(新規情報)がデータベースに登録された場合にLINEに新刊リリースのお知らせを通知する機能も追加してみました。
欲しかった♪
ちょっとまだ情報整理ができていないのですが、そのうち技術ノートにまとめようかなと思います。
お知らせ
Django初心者向けのノートも配信しています♪
以上、Python+Django+スクレイピングを使った応用事例の紹介でした。