【実践技術書】PythonによるWebスクレイピング
WEBスクレイピングを行う際の基本的な処理から、使えるライブラリの紹介、守るべきルールや考慮すべき点などを学べます。
WebスクレイピングにはよくPythonが用いられるイメージがあるので、どこかで役に立つ知識だと思います。 いくつかのライブラリや、関連ソフトが出てくるのでぜんぜんPython触ったこと無いという人にはちょっと難しいかもしれません。でもライブラリを使いこなせるようになれば、かなりできることの幅が広がると思います。
概要
内容は盛りだくさんで、複数のライブラリを用いて処理を行ったりします。巻末にはPythonの入門としてインストール方法も書かれています。
他にも巻末付録には、「Webスクレイピングの適法性と倫理」という章があります。何かの役に立つというものではないですが、結構ためになるので一読しておくと良いです。
-
Webスクレイピング
urllibという標準ライブラリを使い、Web上のコンテンツを取得します。
- HTMLパーシング BeautifulSoupというライブラリをつかってHTMLを処理します。かなり便利なライブラリなので使い方を覚えておくと便利です。
-
クローリングを開始する
Wikipediaを例に用いてスクレイピングによるデータ収集を行います。リンクを辿りデータを収集します。
-
APIを使う
外部サービスのAPIを利用するときの手順や作法を学びます。実際にTwitterやGoogleのAPIを利用します。
-
データを格納
RDBであるMySQLを利用して、DBにデータを格納します。難しいまたは必要なければCSVへの格納ですすめるのもありです。
-
文書を読む
様々な形式のファイルを利用します。PDFやCSV、Wordなどが対象になっています。
-
データのクリーニング
この章以降は応用編の位置づけです。間違った文法のファイルの対応や、取得データのフィルタリングなどを行います。
-
自然言語の読み書き
自然言語解析を少しかじるような印象です。機械学習などを利用する場合はきっと必要になるとお思いますので試しておきましょう。興味なければ飛ばしてもいいと思います。Googleなどのインデックスの概念なども学べます。
-
フォームとログインでクロール
フォームのサブミットを行ったり、ログインの処理を行います。ログインが必要なページについてもスクレイピングを行うために必要になります。Basic認証を初め、サブミットが必要なフォームの通過方法を学びます。
-
JavaScriptのスクレイピング
静的なHTMLのみでなく、JSのフロントエンド処理が行われたページを取得します。Selenium・PhantomJSを用いることでJavaScriptの処理を実行することができます。
-
画像処理とテキスト認識
ライブラリをつかって画像処理を行います。画像になっている文字列を正しく認識することが目的です。
-
スクレイピングの落とし穴
ルールや作法についての内容です。無闇にスクレイピングを行うと、相手に迷惑がかかることがあるので、ある程度の作法は守りましょう。リクエストヘッダを調整したり、リクエストに間隔をもたせたりします。
-
Webサイトをスクレイイングでテスト
簡単にですがWebページのテストを行います。スクレイピングの応用として、Web表現のテストについて学びます。この本では入門の位置づけになっており詳細には書かれていません。Seleniumの本や別の資料を参考にする必要があります。
-
リモートスクレイピング
リモートサーバをつかってスクレイピングを行います。移植性や拡張性などの観点からリモート環境での処理を推奨しています。
付録C.Webスクレイピングの適法性と倫理
アメリカ及び国際的なスクレイピングに関する法律についてです。 商標や著作権について、過去の事例などから学びます。こういったことはすべきではないとか、ここに注意するべきといったことがわかります。本格的なスクレイピング処理をつくる場合は一読しておいたほうがいいです。実際に裁判所により行われた判断も例として掲載されています。
ルールなどの整備も盛んに行われているので、気をつけた方がいいのは事実です。スクレイピングをい行う際には、対象のサービス規約などを確認するといった作法を覚えておきましょう。
特長
Pythonにはさまざまなライブラリが用意されていますので、それらを利用して行います。簡単に利用できるのでとても便利です。Pythonにはスクレイピング以外にも様々なライブラリがあるので、興味があれば試してみましょう。数学的な計算やグラフ化、自然言語処理や機械学習などが有名でしょうか。RailsやLaravelのようなWebアプリフレームワークもあります。
利用する際のインストールなどに苦戦することがあるかもしれません。プログラミングする上で避けては通れない課題なので、この機会に克服しておくと良いです。
プログラムを書く際のコツであったり構造化や設計に関する部分はあまりありません。Python書く上でのルールなどの説明もあまりないです。
おわりに
WebスクレイピングはPythonのチュートリアル的にも学んでおくと勉強になります。 Web関連の知識の習得にもなり、セキュリティ的な勉強になることもあります。
ある程度HTMLへの理解がないと難しいことがあると思いますが、HTMLの構造の勉強にもなるので良いです。
これで一通りの処理や作法に慣れてから、Pythonを利用した機械学習などに取り組むのがおすすめです。