PythonでWebサイトのスクレイピングがしたい…
でもどんなライブラリを使えば良いんだろう…
なんでもできちゃうPythonですが、なんでもありすぎてどれを使えばいいのかわからない、っていう方、多いんじゃないでしょうか。
こんにちは!機械学習インストラクターのフクロウです!
この記事では、Webサイト・Webアプリケーションの実装に使うフレームワークと、Webスクレイピング(Webからのデータ収集)に使えるライブラリを紹介していきます!
機械学習に強いPythonですが、Web開発にも強力なツールが揃っています!どんなツールを使えば良いのかわからない初心者の皆さん向けに、何を調べれば勉強を始められるかが分かる情報をまとめましたので、Python Web開発の最初の一歩としてこの記事を見ていただければ嬉しいです!
この記事はこんな人のために書きました。
- オブジェクト指向プログラミングまでの大まかな理解を終えた学習者で、WebサイトやWebアプリケーションの開発をPythonで行いたい人
- WebページのスクレイピングをPythonで行いたい人
- どんなライブラリを使えばいいかわからない人
なお、Pythonの記事については、こちらにまとめています。
おすすめのWebフレームワークまとめ
そもそもWebフレームワークとは?
Webサイトを作ったり、Webアプリケーションを作るときには、ユーザーからのアクセスに対してサーバー側で処理をしないと行けない場合があります。
Webサイト・Webアプリケーションは2つのコンポーネントに分けることができ、これがフロントエンドとバックエンドです。
- フロントエンド
- HTML、CSS、JavaScriptなどを使ってユーザーが実際に見たり操作したりする画面を作ります。
- バックエンド
- PHPやRubyの「Ruby on Rails」などを使い、ユーザー側からは見えないサーバー側の処理を作ります。
そういうときに、Webページを動的に生成するプログラムが必要になります。これを実現するのが、今回紹介するWebアプリケーションフレームワークです!つまりこの章で紹介するのはRuby on Railsの仲間ということになります。
PythonのWebフレームワーク
さて、PythonにはたくさんのWebフレームワークがあります。代表的なものは以下の5つです。
どれも素晴らしいフレームワークですが、個人でWebアプリケーションやWebサイトを構築するならば、DjangoかFlaskがおすすめです。
Django
DjangoはWebフレームワークに求められる機能をほとんど網羅したオールインワンなフレームワークです。
間隔としてはRuby on Railsに近く、大規模なWebサイト・Webアプリケーションの開発から、小規模な個人プロジェクトまでなんでも作ることができます。
ユーザーも多く、日本語にこだわらなければ非常に膨大な情報がWeb検索をするだけで手に入るでしょう。
Djangoについては、侍でも多くの記事を公開しているので、ぜひ参考にしてください。
Flask
Flaskはマイクロフレームワークを自称するシンプルなWebフレームワークです。
マイクロフレームワークといっても、必要な機能をカスタマイズで使いする事もできますし、様々なサードパーティ製の拡張ライブラリも公開されています。
手軽にWebサイト・Webアプリケーションを開発するのにもってこいの使いやすさです。最近では、Flaskを使って機械学習アプリケーションを作って公開するような試みを多く見かけます。
学習済みの機械学習モデルとWebサーバーが用意できるなら(これは無料 or 安価に借りることができるものもあります)、Flaskを使って手軽に自作のWebサービスを公開できます。
Flaskの入門記事は以下から!
Flaskの勉強方法は以下から!
おすすめのスクレイピングライブラリ
そもそもWebスクレイピングとは?
Webスクレイピングとは、HTMLなどのファイルから必要な情報を取得することを言います。
また、Webクローラーというスクレイピングと一緒によく使われるものがありますが、こちらはWebを巡回して対象ページのデータを収集するものを言います。
PythonのWebスクレイピングライブラリ
さて、PythonでWebからデータを取ってくる際によく使われるのは以下のとおりです。
この中で最もシンプルなのはRequests。これはHTTPリクエストを使うためのツールで、APIへのアクセスみたいなものにも使いますね。
Beautiful Soupはスクレイピングに特化したツールで、HTMLを始め様々な構造化文書(タグなどで修飾されたテキストデータのことです。このような文章は機械には読みやすいんですが、人間には読みづらいですね。)のparserが使えます。
最期にScrapyですが、これはWeb スクレイピング、Web クローリングのどちらもをこなす万能ツールです。単一ファイルのスクレイピングだけで無いのならば、Scrapyを使うことをおすすめします。
以下の記事で網羅的に解説しているので、ぜひ御覧ください。
まとめ
この記事では
- WebアプリケーションやWebサイトを作るためのWebフレームワークとはなにか
- Webからデータを収集するWebスクレイピング・Webクローリングとはなにか
- これらにおすすめのライブラリはなにか
について紹介しました。Pythonでこれらのツールを使うことの利点は、Pythonで作ったその他のシステムと簡単に統合できる点だと思います。
- Webスクレイピングなどによるデータ収集
- 機械学習の訓練
- デモアプリの作成
これらがすべてPythonで完結するのが非常に強力です。ぜひ使いこなしてください。