全1772文字
PR

 それではいよいよスクレイピングの実践に入っていこう。まずは基本的な考え方を整理しておく。

3ステップで必要な情報を取る

 スクレイピングはWebサイトに表示された情報から、必要なものだけを取り出す作業だ。Webサイトの情報はHTML(HyperText Markup Language)で記述され、それをWebブラウザーがレンダリングして表示している。

 従ってスクレイピングは、(1)WebサイトへアクセスするためのURL(Uniform Resource Locator)の組み立て、(2)Webページの取得、(3)Webページの解析、という大きく3つのステップから成り立っている。

基本的な処理の流れ
基本的な処理の流れ
[画像のクリックで拡大表示]

 これらのステップごとに対応するライブラリーがある。URLの組み立ては「urllib.parse」、Webページの取得は「Requests」と「Selenium」、Webページの解析は「BeautifulSoup」である。urllib.parseを除いて標準では付属しないので、必要に応じて仮想環境にインストールする。

簡単なスクレイピングを実践

 これで準備はすべて整った。簡単なスクリプトを実際に作成し、スクレイピングを実践してみよう。具体的には、「Webサイトからタイトルを取得する」というスクリプトだ。

任意のURLのページのタイトルを取得する
任意のURLのページのタイトルを取得する
[画像のクリックで拡大表示]

 実際にアクセスして情報を取得する関数「getTitleFromUrl」を定義し、スクリプトを実行するとこの関数を呼び出す形にしている。下のほうの「if __name__」で始まる部分は、このスクリプトが直接呼び出された場合に実行される部分となる。

 その部分でurllib.parseを使ってURLを組み立てている。今回は「https://www.example.com/」なので、直接指定してもよい。ただし実際には日付やフォルダーなどを動的に組み立てることも少なくないので、あえてここではライブラリーを使って組み立てた。ページ内にあるリンクから不要な情報を取り除く場合などにも使える。

 そしてRequestsライブラリーを利用してWebページを取得。取得した結果をBeautifulSoupライブラリーを用いて解析し、解析結果からタイトルの文字列を取り出している。