【超入門編】PythonによるWebスクレイピング/データ収集

Webサイト上にある大量の情報を収集し、分かりやすく一覧にしたいと思ったことはありませんか? そのような、面倒くさい作業を自動化できる方法がスクレイピングです。本記事では、プログラミングを一切触ったことがない初心者でも、取り組みやすく分かりやすい解説を行っております。ぜひご覧ください。

データ収集作業を効率化させるWebスクレイピングとは

スクレイピングとは、データを収集して利用しやすく整える技術を指します。特に、情報をWebサイトから集めることをWebスクレイピングと呼びます。つまりWebスクレイピングとは、Webサイトから膨大な量の情報を自動的に抽出する技術です。

Webスクレイピングを行うには、スクレイピングサービスを利用します。スクレイピングサービスには、大きく分けるとタイプが違う3種類のサービスがあり、種類は以下の通りです。

  • ソフトウェア型
  • プラグイン型
  • Webサービス型

これらのサービスは、プログラマーやWebマーケティング担当者向けに作られているサービスです。有償のサービスが多いため、手軽に使用できません。無償利用できるサービスもありますが、多くは機能制限が設けられています。しかし、自分でプログラミングを行えば、用途に合ったWebスクレイピングが可能です。今回は主に、Pythonを使ったWebスクレイピング技術について解説します。

Webスクレイピング・クローリング・APIの違い

Webスクレイピングと似た意味の言葉に、クローリングとAPIがあります。クローリングとは、クローラーと呼ばれるプログラムがインターネット上を巡回して、情報を集める方法です。クローリングは、巡回し情報を網羅的に集めることが主な役割です。

クローリングに対し、スクレイピングは前述のように、インターネット上の情報から必要な情報のみ集めることを指します。つまり、不用な情報は削り取り、重要な情報だけを抽出して集める技術です。

そして、APIはサービス提供者による開発者向けの機能です。サービス側が使ってもらいたいデータを公開し、APIのユーザーがデータを活用します。APIを提供していないサービスには使用できません。しかし、APIがない場合はWebスクレイピングで収集が可能です。

Webスクレイピングの仕組み

Webスクレイピングはどのような仕組みなのでしょうか。今回は、抽出したデータの形をCSVファイル化した場合で紹介します。仕組みは以下の通りです。

  1. 特定のサイトからHTMLデータを取得
  2. 取得したHTMLデータのタグ構造を解析し、必要な項目だけ抽出する
  3. 抽出したデータを変換
  4. 変換したデータをCSVに出力

これら上記の方法を、複数のサイトに対して自動で繰り返します。抽出したデータはCSVだけではなく、さまざまなファイルの形として出力できます。

スクレイピングを利用するメリット

スクレイピングは、作業の一部を自動化できるため便利な技術です。ここでは、スクレイピングを利用すれば、どのようなメリットを得ることができるかご紹介します。

データ自動取得による作業効率化

スクレイピングを活用すると、今まですべて手作業で行っていた業務の時間を短縮できます。たとえば、データを取得するために、Googleで検索→コピペ→集積・整理のような工程を何度も繰り返してデータを収集していましたが、これらの手作業をすべて自動化できます。データの取得を自動化すれば、手作業で行っていた頃よりも作業効率の向上が可能です。

インターネット上のデータをマーケティングに活用

スクレイピングを利用すれば、インターネット上の膨大なデータからリサーチできます。人の手では限られた範囲からしか集めることができなかったため、データの数を揃えることはとても大変な作業です。しかし、その労力を払わずにデータをさらに大量に入手できます。

また、リアルタイムな情報を仕入れることができます。インターネットに挙がったばかりの情報もスクレイピングの対象に入るためです。そのため、スクレイピングはマーケティングに活用できます。

スクレイピングを利用する際の注意点

Webスクレイピングは、情報を収集する上でとても強力な方法ですが、いくつか注意しなければならない点があります。注意事項をしっかり理解し、Webスクレイピングの活用を後悔しないようにしましょう。

DOS攻撃にならないよう注意する

Webスクレイピングは最新の情報を収集するため、データの収集先のサイトに頻繁にアクセスを繰り返すことになってしまいます。同じサイトに対して短時間で大量のアクセスを繰り返すと、DOS攻撃を行っている状態と同じ状況になってしまうことがあります。サイト側のサーバに負荷がかかりダウンさせてしまう危険性を認識しましょう。

DOS攻撃とは

DOS攻撃とは、故意に同じWebサイトに短時間で何度もアクセスを繰り返して、そのWebサイトが使用しているサーバに大きな負荷をかけ、サーバをダウンさせるサイバー攻撃です。

DOS攻撃は、1秒間に何回などアクセス頻度によらず、サーバ側に負荷を与えた時点で犯罪です。そのため、Webスクレイピングを行う際には相手に迷惑をかけない配慮が必要になります。

スクレイピングが問題となった岡崎図書館事件

岡崎図書館事件とは、2010年に岡崎市立図書館にスクレイピングを利用して、新着図書ページにアクセスした人物が、DOS攻撃をした疑いで連行・逮捕された事件です。

リクエストを同時送信しない(シリアルアクセス)などサーバ負荷には配慮していましたが、スクレイピングを使用し図書館のサーバをダウンさせてしまいました。しかし、1秒間に約1回のシリアルアクセスは常識的なものであったため、サーバが落ちることは考えられない出来事でした。その後調査から、図書館システムの不具合が事件の原因だと判断され、逮捕されて1か月後に釈放されています。

参考:Librahack「Librahackメモ

用途を情報解析と私的利用のみに限定する

スクレイピングを利用する上で十分注意する必要があることは、取得した情報の取扱いです。なぜなら、データとして得た情報は、誰かの著作物であるためです。そのため、他人の著作物をサーバに保存した時点で著作権法に触れる恐れがあります。著作権法に引っかからない例外として、私的利用と情報解析が目的の場合は認められています。

私的利用では、著作物を仕事以外の目的で使用し、家庭内や個人の使用であれば問題はありません。情報解析では、膨大な情報からデータを抽出し、統計的な解析を行う場合です。仕事で使う時には取得したデータを他人に譲渡せず、データは再構成したうえで使用する必要があります。

robots.txtの制限内容を遵守する

robots.txtとは、クローラーに対してアクセスの制限するファイルです。Webサイトに対して使用することにより、クローラーからのリクエストによってサーバに過負荷がかかっている時、クロールトラフィックを管理できます。

「Pragma:No-cache」メタタグが設定されている場合、そのページをダウンロードしてはいけません。また「rel=”nofollow”」が設定されている場合、クローラーで辿ってはいけません。これらの決められた制限内容は著作権法に基づいて定義されているため、遵守してください。

対象サイトの規約を遵守する

また、robots.txtの制限内容以外にも対象サイトの規約も遵守してください。

利用規約において、Webスクレイピング行為が禁止されているサイトは対象としてはいけません。特に、会員限定ページなどに多い規約です。利用規約に対し同意を示したうえでスクレイピングを行ってしまうと、利用規約違反として責任を追及される可能性があります。

スクレイピング禁止としているサイトをいくつか紹介します。

  • Amazon
  • Twitter、Facebook、InstagramなどのSNS
  • ファイナンス系のサイト

利用規約違反にならないように、事前に利用規約を確認してスクレイピングを行いましょう。

PythonでWebスクレイピングを行うための準備

ここでは、PythonでWebスクレイピングを行うために必要な知識を簡単にまとめています。上述した注意事項を守った上で、Pythonを使ったWebスクレイピング技術についてご紹介します。

WebスクレイピングにPythonを使う理由

Pythonはデータの処理・分析・解析を得意とし、Webスクレイピングに長けたプログラミング言語です。Webスクレイピングに必要なライブラリが豊富にあります。ソースコードがシンプルであり無料のため、初心者でも扱うことができると人気を集めています。

ライブラリとは、いくつかの機能をまとめたパッケージの総称です。パッケージとは、さらに複数のモジュールをまとめたものです。

import・モジュールとは

モジュールとは、複数の関数をまとめたものです。しかし、XやYといった数学的関数とは違い、Pythonでは「.py」ファイルを指します。モジュールが含まれているライブラリは大きく分けると2種類です。

  • Pythonにもとから備わっているタイプ
  • 必要な時にダウンロードしてインストールする必要があるオプションタイプ

特に、前者は「標準ライブラリ」と呼ばれ、Pythonは標準ライブラリを使用することが前提とされています。しかし、標準ライブラリ以外のモジュールを使用したい時、importする必要があります。importとは、保存されている別のモジュール(ファイル)を自分のPythonコードに取り込む機能です。

スクレイピングでは、RequestモジュールとBeautifulSoupモジュールが必要になります。この2つのモジュールをインストールし、自分のPythonコードで使えるようにしなければなりません。Pythonでライブラリの中に含まれるモジュールを利用するには、次のようにimportを記述して、読み込んだあとに利用します。

import ライブラリ名 モジュール名

ほかにも、「pip」を使ったimport方法も存在します。pipは外部ライブラリを利用する時に利用して、ライブラリをインストールできます。pipとは、Pythonのライブラリ管理ツールです。Pythonに標準でインストールされています。まず、Windows+Rを押したあと「cmd」と入力し、コマンドプロンプトを開きます。つぎに「pip install ライブラリ名」を入力してエンターキーを押せば、インストールが開始されます。

Requestsモジュール

Requestモジュールとは、PythonのHTTP通信用ライブラリです。Webスクレイピングで、HTMLやXMLファイルからデータを得る時に使用されます。Webサイトの多くはHTMLやXMLが使われているため、Webスクレイピングを行う際に非常に便利なライブラリです。

まずは、Requestモジュールをインストールしなければなりません。インストールには、コマンドプロンプトを開き、以下のコマンドを打ちます。

pip3 install requests

これで、Requestモジュールが使えるようになります。つぎに、インストールしたRequestモジュールを使うために、ソースコードの一番上を次のように書き換えます。

import requests Z

以上で、プログラム内でRequestモジュールを使えるようになりました。

Requestモジュールの基本的な使い方として、get()メソッドがあります。これは、サーバからHTMLやXMLなどの情報を取得する時に使用します。

Beautiful Soupモジュール

Beautiful Soupモジュールとは、Requestsで取得したデータを抽出するWebスクレイピング用のモジュールです。Beautiful Soupモジュールを使用すれば、Webサイトから簡単にデータを自動取得できます。

Beautiful SoupモジュールもRequestモジュール同様に、インストールしなければいけません。インストールの手順はRequestモジュールの時と同様で、コマンドプロンプトを開き、以下のコマンドを打ちます。

pip install beautifulsoup4

そしてエンターキーを押せば、インストールが開始されます。

また、Beautiful Soupモジュールの基本的な使い方となる機能はfind()メソッドです。

find()メソッドは、検索するHTMLタグの引数に一致する最初の要素を1つ取得します。

たとえば<h2>だけ抽出する場合、引数に<h2>を指定すれば、最初に表示される<h2>の要素が自動的に取得されます。

Seleniumモジュール

Seleniumモジュールとは、RequestモジュールとBeautiful Soupモジュールの両方の機能を併せ持ったモジュールです。しかし、両者と違うところとして、JavaScriptが使われているサイトからデータを取得しています。

Seleniumモジュールのインストール手順も上記と同様です。まず、コマンドプロンプトを起動し、以下のコマンドを入力します。

pip install selenium

あとは、エンターキーを入力するだけでインストールが開始されます。

また、Seleniumモジュールを使用すれば、Requestモジュールでは取得できない情報を取得することが可能です。

近年、Webサイトによってはユーザーが画面をクリックし、スクロールしたときに次画面の読み込む処理を開始するサイトがあります。ほかにも、最初にログインを求められるサイトがあります。これらのサイトは、Requestモジュールだけでデータを取得することは出来ません。その時にSeleniumモジュールが利用されます。

Beautiful Soupを使った実際の操作手順

ここでは、Beautiful Soupを使った実際の操作手順について説明します。サンプルコードとして、バレッドプレスの記事タイトルを取得する場合のコードを例とします。

import requests #「requests」をimport   

from bs4 import BeautifulSoup #「BeautifulSoup」をimport     

TARGET_URL = "https://valed.press/"   

html = requests.get(TARGET_URL) 
soup = BeautifulSoup(html.content, "html.parser") 
title = soup.find("title")   

print(title) # <title>記事タイトル</title>が出力される 

1行目「import requests」では、requestsをimport しろと指示を出している一文です。

2行目「from bs4 import BeautifulSoup」では、BeautifulSoupをimportしろ、と指示を出しています。

3行目「TARGET_URL = “https://valed.press/”」では、抽出先のURLを指定する指示であり、イコールで具体的なURLを教えています。” ”(ダブルクォーテーション)の使用はプログラム上の必要な要素であるため、プログラムをかく時は忘れないようにしてください。

4行目「html = requests.get(TARGET_URL)」では、requestsのget()メソッドを処理している文です。3行目のURLを引数として使用しています。

5行目「soup = BeautifulSoup(html.content, “html.parser”)」では、html.contentが解析対象のHTMLであることを記述しています。また、コンマを挟んだ後ろにある “html.parser”が、解析に利用するパーサー(解析器)を指定しています。

6行目「title = soup.find(“title”)」では、BeautifulSoupのfind()メソッドを処理している文です。引数に”title”と指定されているため、引数に一致する最初の要素を1つ取得します。

7行目「print(title)」では、6行目までに処理した情報を目に見える形で出力します。

もし、対象のデータをすべて抽出する場合は、find()ではなくfind_all()を使います。

Webスクレイピングで取得したデータの活用方法

Webスクレイピングで取得したデータには、さまざまな活用方法があります。今日では、Webスクレイピングが活用される場面は多岐にわたっています。具体的に挙げると、Webページ、ECサイト、ニュースポータルなどです。ここでは、それらがどのようにWebスクレイピングを活用しているかご紹介します。

コンテンツマーケティングに活用する

Webスクレイピングは、コンテンツマーケティングに活用できます。

コンテンツマーケティングとは、以下の手法です。

  • 見込み顧客に、価値あるコンテンツ(記事や画像、写真など)を適切な時期に提供する
  • 見込み顧客に購買行動を起こさせる

Webスクレイピングをコンテンツマーケティングに活用すれば、顧客が望む商品やサービスはどのようなものか調べることができます。新たなコンテンツを作成する時に意識する指標となるため、より価値のあるコンテンツ作成が行えます。これからの課題について明確に見つけ出せる可能性が高いため、迅速に次の行動に移りやすくなるでしょう。

競合他社の動向調査に活用する

Webスクレイピングは、競合他社の動向調査に活用できます。競合他社が現在何を取り組んでいるか調査することができるため、動向を読み、一歩先んじた行動を取ることが可能です。競合他社を調査すれば、自社商品・サービスの質の向上を図ることができます。また、市場の価格や商品やサービスの調査もできるため、最も正確な情報が手に入ります。

見込み客リストの作成に活用する

コンテンツマーケティングにも使用できる、見込み客のリストを作成できます。自社商品・サービスに興味のあるユーザーを解析すれば、顧客になる可能性を秘めた見込み客に、効率的に適切なタイミングでアプローチが可能です。購買の可能性が高い見込み客にアプローチをかけることができるため、売上の増加に貢献できます。

SEO対策に活用する

情報の取得、分析・解析を行うため、SEO対策に活用することが可能です。また、リアルタイムな新しい情報を逐次更新する必要があります。SEO対策を行う上で、情報の正確さと新しさは重要な要素です。

ほかにも、キーワードやそれに関連する結果、ランキングを抽出して、SEOの取り組みを監視します。そのため、検索結果の上位サイトが、どのように自社サイトを上回ったかを分析することも可能です。

比較情報収集に活用する

自社商品・サービスが、他社とどのようなところが違うかを比較し、情報を収集することが可能です。価格や、質、性能などの情報を収集するため、比較分析を行うことができます。

たとえば、似た商品であふれているECサイトに活用すると、商品リストやカテゴリを抽出する工程が自動化できます。商品情報を収集して、市場における商品の品揃えを適切に比較できるでしょう。

また、無数にあるインターネット上のニュース情報から、自社のビジネスに影響を与えるような出来事があった時の監視を行います。瞬時なニュースが必要な企業にとっては、常に監視してくれるWebスクレイピングは重要な役割を持ちます。

Google検索を手作業で繰り返す作業から開放されよう

たくさんの情報を取得するために、毎度手作業でGoogle検索を行うことは労力と時間がとてもかかります。Google検索にかけている労力を一度Webスクレイピングに使えば、手作業でGoogle検索を繰り返す作業からの脱却を図ることができます。また、時間もかなり浮くため、さらなる自社商品・サービスの開発や販売などに繋げることが可能です。Webスクレイピングを活用して作業を自動化し、新たなリソースの確保を目指しましょう。