Webスクレイピングとはなんぞや
webスクレイピングとは、webサイトの情報を抽出するソフトウェア技術のこと。
普通はChrome立ち上げて、何かしらで検索して、知りたいこと書いてあるサイトにアクセスして、情報を読み込む…てやると思う。例えば、これがいつも同じサイトで同じ情報を取得したいときはなかなかめんどくさい。
スクレイピングを使うと、プログラムが外部サーバにアクセスし、取得したデータを読み取り機械的に解釈することができる。
うまく使えば人手による作業の効率を大幅に向上することができるし、毎日何時に〇〇の最新情報を取得して××のバッチ(処理)を実行、とすれば、自動化でやれることの範囲がグッと拡がることは想像に容易いかと思う。
注意すること
webサイトによっては、スクレイピングを許可していない場合がある。
それにも関わらずスクレイピングをすると、場合によっては違法となり、法的に訴えられる可能性があるので十分注意されたし。webサイトの利用規約や著作権を確認すること。robots.txtの確認も有効。robots.txtにはロボットがどのURLに対してアクセスを許可するか、拒否するか、が記載されている。
スクレイピングで裁判になった例として、岡崎市立中央図書館事件が有名だ。最悪の場合、こういったケースになることもある、と理解したうえで、自己責任で実施願いたい。注意事項としてはこちらも参考にどうぞ。
やり方
ざっくり2通り。これら2つを使えれば大体は困らないだろう。
- Requestsパッケージを使いGET、POSTメソッドでコンテンツ取得
- Seleniumパッケージを使いブラウザを介してコンテンツ取得
RequestsとSeleniumの違い/メリットデメリット
簡単に違いを述べる。
Requests
一言でいうと 、Python の HTTP 通信ライブラリのことを指す。Python には標準で urllib というライブラリがあるが、 Requests はそれよりもシンプルに分かりやすくプログラムを記述することが可能。
メリット:
- GET、POSTメソッドが利用できる
- 使い方がシンプルで分かりやすい
デメリット:
- JavaScriptで動的に値が変化する値には対応できない。( JavaScriptはブラウザ側で動作するため、直接HTMLファイルをダウンロードする方法ではJavaScriptが実行される前の値がとれてしまう)
Selenium
Seleniumは本来、webサイトのテスト自動化のためのツールのことで、Pythonにライブラリが展開されている。Seleniumを使うとGoogle Chomeなどのwebブラウザの操作をプログラムで指示することが可能。
メリット:
- JavaScriptが実行されたあとのHTMLを取得することができる。
- ブラウザを立ち上げて処理が走るため、動きが確認しやすい(隠すことも可能)。
デメリット:
- POSTメソッドが使えない
- 少しややこしい
Requestパッケージを利用した方法、 Seleniumを利用した方法はそれぞれ以下にまとめている。
実際に使ってみたい方はこちらからどうぞ。
Beautiful Soupと組み合わせる
Requests、Seleniumはあくまでhtmlの取得までを担う。
その後のhtml解析をするためには、Beautiful Soupというhtml解析用のパッケージを利用する必要があり、正規表現など利用して初めて必要な値を抽出することができる。
Beautiful Soupの使い方はRequests編で触れているので参照してくりょ。
おまけ
教科書的なものが欲しい人は。
コメント