プログラムを組んでWebスクレイピングを実行する場合に便利なプログラミング言語がPythonです。では、どのようにPythonを活用してWebスクレイピングを実現するのでしょうか。今回は、PythonでWebスクレイピングを行う基本的な手順をご紹介します。
まずWebスクレイピングとは何か、確認しておきましょう。
Webスクレイピングとは、Web上の特定の情報を自動的に抽出する技術を指します。スクレイピング(Scraping)とは「Scrape(こする・かき出す)」からきている言葉であり、情報をこするようにかき出すといった意味合いがあります。
Webサイトの情報収集といえば、これまでは人がブラウザを立ち上げて一つ一つのページを閲覧しながら収集するのが一般的でした。しかし、近年は情報を頻繁に確認しなければならない状況や、情報収集の幅を広げたいニーズが生まれており、人手による作業では非効率的なシーンが増えてきました。そこで、Webスクレイピングを行ってプログラムを通じて膨大な量の情報収集を自動化する試みが行われています。
Webスクレイピングの基本的な流れを見ていきましょう。
まずはスクレイピングの対象となるWebページにアクセスし、テキストや画像、動画などを取得します。
取得した情報の中から、必要なデータのみを抽出します。
抽出したデータを保存します。
このような流れでWebスクレイピングを行います。自らプログラミングを行う場合は、この流れでプログラムを組んでいきます。
Webスクレイピングは、自分でプログラミング行うか、スクレイピングサービス・ツールを利用して行うか、の2通りに分かれます。
このうち、自分でプログラミングを行う方法を選択する場合、Webスクレイピングに必要なWebクローラーやWebスクレイパーといったロボットをゼロから自作します。Webスクレイピングに適しているプログラミング言語の例としては、Python、PHP、Ruby、JavaScriptなどがあります。
関連記事:Webスクレイピングに最適なプログラミング言語特集!おすすめはどれ?
Pythonは「パイソン」と読みます。オランダ人が開発した言語で、1991年のリリース以来、世界的に利用されてきました。シンプルで短いコードで記述できたり、動作を容易に確認できたりすることから、プログラミング言語の中でも人気が高い言語の一つです。
複数あるプログラミング言語のうち、なぜPythonがよく使われるのでしょうか。その理由として、Webスクレイピングに適したライブラリが豊富な点が挙げられます。プログラミング言語におけるライブラリとは、簡単にいえば、再利用可能なソフトウェアの部品のことです。
PythonにはWebスクレイピングに便利に使えるライブラリが複数存在するため、手軽にWebスクレイピングのプログラムを組むことができます。
Webスクレイピングに適したPythonのライブラリとして、代表的な4つが存在します。それぞれのライブラリでは、以下のようにできることや特徴が異なります。
ライブラリ名 | 1.Webページにアクセス、情報取得 | 2.データ抽出 | 3.データ保存 |
---|---|---|---|
Requests | ○ | ||
Beautiful Soup | ○ | ||
Selenium | ○ | ○ | |
Scrapy | ○ | ○ | ○ |
Webページのアクセス・情報取得を行うために用いられるライブラリです。メソッドとして「get()」がよく使われ、サーバーからHTML、XMLなどの情報を取得するのに使用します。情報を取得したいURLを指定し、コードを記述していきます。
Beautiful Soupは、データの抽出を行うために用いられるライブラリです。Requestsなどでデータを取得したらBeautiful Soupの出番です。「BeautifulSoup()」を用いて、解析対象のHTMLやXMLと利用する「パーサー」という解析器を指定し、コードを記述します。
Seleniumは、Webページへのアクセス・情報取得とデータの抽出を行うために用いられるライブラリです。ブラウザを自動的に操作し、ログインを必要とするサイトや、スクロールすることで自動的に次ページが読み込まれるといった特殊なWebページに対応できます。
「get()」メソッドを用いることでブラウザから指定のWebサイトにアクセスし、WebページのHTML要素を取得するために「find_element()」メソッドを用いたり、Googleの検索キーワードを入力するフォームなどのHTML要素に文字列を書き込む「send_keys()」メソッドを用いたりして、情報を抽出するプログラムを作ります。
Scrapyは、クローリングスクレイピングを行うためのライブラリ・フレームワークです。Scrapyを利用すれば、RequestsやBeautiful Soupといったライブラリをつぎはぎする必要がありません。
ここからは、RequestsとBeautiful Soupmの2つのライブラリを利用して、Webスクレイピングを実行する手順を解説します。
Pythonでプログラミングを実行する前に、Pythonの開発環境を用意しておく必要があります。専用のプログラムをPCやサーバーにインストールします。例えば、Python公式サイトで配布されているプログラムがよく用いられます。
また開発に必要な情報がそろっている統合開発環境(IDE)の構築も必要です。IDEについては、一般的にPythonに適したものを利用しましょう。
Requestsで情報を取得したいWebページにアクセスするコードを記述します。
取得したいURLを「https://www.xxxxx.co.jp/」とした場合の記述例は以下になります。
import requests
url = 'https://www.xxxxx.co.jp/'
# トップページにアクセス
res = requests.get(url)
# レスポンスのステータスコード、ボディを表示
print(f'ステータスコード:{res.status_code}')
print(res.text)
Beautiful Soupでデータを抽出したいWebページから情報を抽出するコードを記述します。
取得するURLを「https://www.xxxxx.co.jp/」とし、「Requests」と「Beautiful Soup」を併用した記述例は以下になります。
import requests
from bs4 import BeautifulSoup
url = 'https://www.keywalker.co.jp/'
# トップページにアクセス
res = requests.get(url)
# レスポンスボディをHTMLとしてパース
soup = BeautifulSoup(res.text, 'html.parser')
# ページタイトルを取得
title = soup.find('title')
print(f'タイトル:{title.text}')
# 見出しのテキストを取得
h3 = soup.select_one('h3.top-service__mission__title')
print(f'H3:{h3.text}')
# 右上のメニュー一覧を取得
spans = soup.select('.menu-dd p span')
for span in spans:
print(f'SPAN:{span.text}') # お問い合わせのURLを取得
link = soup.select_one('.list-contact a')
print(link.get('href'))
複数のライブラリを組み合わせるか、Scrapyのように単体で完結するライブラリを利用するなど、状況に応じて最適なものを選択して実施しましょう。
今回は、Webスクレイピング初心者の方に向けて、PythonでWebスクレイピングを実行する場合の基本的な方法や手順をご紹介しました。ここまでで、Pythonを利用したWebスクレイピングを自力で実行することが難しいと感じた方は、Webスクレイピングサービスをご検討ください。
Webスクレイピングサービスの利点は、プログラミングを行う自社の人的リソースが不足していても手軽に実施ができ、情報収集・分析作業の工数削減や効率化につながる点が挙げられます。大規模なリサーチや企業の本格的な情報収集に向いているといえます。
Webスクレイピングサービスであれば、キーウォーカーの「ShtockData」をご検討ください。600万サイト以上、1500億ページ以上のクローリング実績(※ 2021年12月7日時点)があり、大量の情報収集はもちろん、データの見える化・分析まで一連のソリューションを提供します。詳細は以下よりご覧ください。
市場シェアNo.1 WebスクレイピングサービスならShtockData
Webスクレイピング&Webクローリングをすぐに誰でもできるツール型のShtockDataについて1冊にまとめました。特徴や費用感、導入後の運用イメージなどを集約しています。
ぜひお気軽にダウンロードしてみてください。
Webスクレイピング&Webクローリングをすべてお任せできる代行サービス型のShtockData Proについて1冊にまとめました。特徴や選ばれる理由、事例などを集約しています。
ぜひお気軽にダウンロードしてみてください。