
競合調査、マーケティング戦略などビジネスに活用すべき情報のほとんどは、インターネットに集約しています。そうした情報収集を手作業ではなく、自動的に行えればどんなに楽かと考えたことはありませんか?
実はPythonでプログラミングするスクレイピング(クローリング)を活用することで、初心者でも簡単にインターネット上の欲しい情報を自動的に収集します。本記事では実際のコードを用いて、Pythonを使ったスクレイピング(クローリング)のやり方について解説します。
目次
そもそも(Web)スクレイピング(クローリング)とは?
スクレイピングとはプログラムを用いて、インターネット上にある特定の情報を集めるための技術です。「かき集める」を意味するScrape(スクレイプ)に由来しています。
「クローリング」も同様にWebサイトからのデータを収集する技術です。正確にいうとスクレイピングとクローリングの用途は違いますが、一般的にスクレイピング=クローリングとしてとらえられていることも多いため、本記事では同様の技術としてご紹介いたします。
スクレイピング(クローリング)を行うにはプログラミングを用いるため、当然ながらプログラミング言語を扱えることが前提になります。スクレイピングが行えるプログラミング言語はいくつかありますが、最もおすすめなのはPython(パイソン)です。
PythonはAI・機械学習によく活用されています。また、スクレイピングを行うためのライブラリ(プログラムのまとまり)が多数用意されており、初心者でも実行できる環境が整っています。
Pythonで利用可能なスクレイピング(クローリング)ライブラリ
それではPythonで利用可能な、主なスクレイピング(クローリング)用ライブラリをご紹介します。
BeautifulSoup4
BeautifulSoup4はWebサイトのHTMLコードから情報収集するためのライブラリです。ちなみにHTMLとはWebサイトを構成する言語の1つであり、Webサイトのタイトルや見出し、文章などは全てHTMLで出力されています。
Requests
RequestsはHTTP通信用のライブラリであり、利用することでHTMLファイルそのものをダウンロードできます。Requestsを使ってHTMLファイルをダウンロードし、BeautifulSoup4で必要な情報を抽出するというのが一般的なスクレイピングのやり方です。
Selenium
Selenium は Webブラウザの操作を自動化するためのフレームワークです(例:Chrome、Firefox)。
元々は Web アプリケーションの UI テストや JavaScript のテストの目的で開発されましたが、テスト以外にもタスクの自動化や Webサイトのスクレイピングなど様々な用途で利用されています。
これらの他にもPyppeteerやScrapyなど、スクレイピング(クローリング)可能なライブラリがあります。こうしたライブラリが豊富に用意されているのは、Pythonを利用する大きなメリットです。
スクレイピング(クローリング)のメリット
スクレイピング(クローリング)はPythonの実行環境と、BeautifulSoup4やRequestsなどのライブラリを揃えられれば初心者でも簡単に行うことができます。では、スクレイピングをビジネスに取り入れることで、具体的にどのようなメリットがあるのでしょうか?
手作業で行うより素早く情報収集できる
スクレイピングによってリンクタグテキストを取得するまでの時間はわずか数秒です。少ない量であれば手作業でもすぐ終わりますが、複数ページ、または複数個所のデータ取得を手作業で行うとなると、膨大な時間がかかりますね。スクレイピング(クローリング)を使えば手作業で行うよりも圧倒的に素早く情報収集できるため、業務効率がアップします。
また、情報収集のスピードは企業の意思決定スピードに直結する可能性もあるため、近年ではスクレピングを活用している企業が増えています。
APIでは取得できない情報まで得られる
スクレイピングと似た技術にAPI(アプリケーション・プログラミング・インターフェース)があります。
APIとはサービス運営者が提供するプログラムであり、APIを使うことで特定の情報を集められます。たとえば世界中のニュース記事を集めたり、Amazonに掲載されている商品情報を集めたりできます。
しかし、APIで収集できる情報はサービス事業者が提供する範囲内に限定されています。対して、スクレイピングはコードを変えるだけであらゆる情報収集が行えるため、ビジネスの要望を満たせるメリットがあるのです。
Pythonを使ってスクレイピング(クローリング)をやってみよう!
それでは実際にスクレイピングを行なっていきましょう。
今回はBeautifulSoup4とRequestsを使い、いわゆる一般的なスクレイピングのやり方をご紹介します。
その前にまずはPythonとpipをインストールしておいてください。
⇒Pythonをインストール
⇒pipをインストール
Beautiful Soup4環境を整える
Beautiful Soup4を利用する環境を整えるにはライブラリをインストールする必要があります。Windowsならコマンドプロンプト、Macならターミナルを起動し、次のようにコードを入力しましょう。
Beautiful Soup4をインストール
$ pip install beautifulsoup4
requestsをインストール
$ pip install requests
以上でスクレイピング(クローリング)を行うための環境が整います。
Beautiful Soup4でスクレイピング(クローリング)
では実際に、スクレイピング(クローリング)を行なっていきます。手順としてはrequestsを使ってHTMLを取得し、そこからBeautiful Soup4を抽出します。ここではPigDataのトップページから、リンクタグに指定されているテキストのみを抽出するスクレイピングを実行します。
# requests及びbs4を必ずインポートする
import requests
from bs4 import BeautifulSoup
# HTMLの取得先として当サイトを指定する
response = requests.get("https://pig-data.jp")
# BeautifulSoup4でサイトのテキストを取得し、
# 第二因数にhtml.parserを指定、解析結果をsoupに入れる
soup = BeautifulSoup(response.text,'html.parser')
# soup.find_all('a', text=True))でaタグに指定されている要素を抽出、
# print(element.getText())でテキストのみを出力する
for element in soup.find_all('a', text=True):
print(element.getText())
上記のコードを実行した出力結果はこちら。
$ python test.py

見事、PigDataのトップページでリンクタグに指定されているテキストを取得できました!
スクレイピング(クローリング)の注意点
非常に魅力的なメリットを持つ一方で、スクレイピング(クローリング)には注意点もあるため合わせてご紹介します。
Webサイトによってはスクレイピング(クローリング)を拒否される
Webサイトによっては「スクレイピング(クローリング)されないための対策」を取っている場合があります。そうしたWebサイトではスクレイピングが拒否され、情報収集が行えません。これは外部からのスクレイピングにより、サーバー負荷が大きくならないための対策です。
利用規約により違反になる可能性がある
Webサイトによっては利用規約にてスクレイピングを禁止している場合があります。スクレイピングが禁止されているWebサイトでスクレイピングを実行してしまうと違法になり、損害賠償を請求される可能性があるため注意してください。
また、スクレイピング(クローリング)で収集した情報を「解析」以外に使用してしまうと、著作権法に違反する可能性もあるので、情報の取り扱いには十分注意しましょう。
まとめ
情報収集が重要な現代ビジネスにおいて、スクレイピング(クローリング)は今や必須技術と言えます。Pythonでスクレイピング(クローリング)をするとなれば、すでに用意されているライブラリを活用することで簡単にスクレイピング(クローリング)の第一歩を踏み出すことができます。
一方で、複雑なWebサイトのスクレイピング(クローリング)には熟練した技術が必要となります。また法律的な観点についても熟知している必要があるでしょう。これは特に企業でスクレイピング(クローリング)を行う際に気を付けなければならないことです。もしスクレイピング(クローリング)をすることに不安があるのであれば専門家にご相談ください。