]

【入門ガイド】Webスクレイピングのやり方をゼロから解説!

【入門ガイド】Webスクレイピングのやり方をゼロから解説!|Webクローリング&WebスクレイピングサービスShtockData

近年、Webスクレイピングがビジネスのあらゆるシーンで活用されています。今やデータ活用はビジネスにおいて必要不可欠ですが、その多くのデータはWeb上に存在します。競合情報やマーケティング情報などをWeb上から取得するWebスクレイピングをビジネスに活用することをご検討されている企業様は多いのではないでしょうか。
今回は、Webスクレイピングのやり方の基本を解説します。

目次

Webスクレイピングとは?

Webスクレイピングとは、Web上の特定の情報を自動的に抽出する技術を指します。スクレイピング(Scraping)とは「Scrape(こする・かき出す)」からきている言葉であり、情報をこするようにかき出すといった意味合いがあります。

ただ単にWeb上の情報を集めるだけでなく、不要な情報を削って求める情報を抽出した上で収集するところに特徴があります。

基本的な仕組み

Webスクレイピングの仕組みは、大きく分けて「Webクローラー」「Webスクレイパー」の2つで構成されています。

1.Webクローラー
Webクローラーのクローラーとは、クローリングを行うロボットを指します。クローリング(Crawler)とは「Crawl(這い回る)」の意味合いから、Web上を巡回する役割を担うものを指します。巡回してテキストや画像、動画などのデータを自動的に収集・保存します。

2.Webスクレイパー
Webクローラーが必要な情報を見つけた後は、Webスクレイパーが、必要なデータを抽出する作業に取りかかります。

つまりWebスクレイパーとは、Webページからデータを抽出する役割を持つロボットです。WebページはHTMLという言語で構築されていますが、そのHTML内から不要な情報を削った上で、必要なテキストや画像、動画などを自動で抽出する働きをします。さらに、Webスクレイパーは抽出した情報を加工するところまで行うこともできます。

Webスクレイピングのビジネス活用シーン

Webスクレイピングの技術は、すでにビジネスのあらゆるシーンで役立てられています。主なシーンを見ていきましょう。

製品・サービスの価格調査

製品やサービスを市場に投入する際には、競合他社の価格調査が欠かせません。しかし一つ一つWebサイトを開いて価格を目視で調査するのは気が遠くなる作業です。Webスクレイピングを用いれば、ECサイトなどに記載の製品やサービスの価格情報を自動抽出し、分析することによって、データに基づいた市場投入や価格設定が可能になります。

不動産市場調査

不動産市場の調査にも役立ちます。例えば不動産ポータルサイトには、膨大な量の物件情報が存在します。家賃や売買価格などの価格情報から、新着物件、顧客にとって最適な物件などの物件情報までをWebスクレイピングで自動抽出することによって、仲介業者にとっては顧客提案の効率化につながります。また不動産売買や投資に関わる事業者や個人にとっては、必要な情報を大量に取得できることから売買や投資を有利に進められます。

口コミ・レビュー収集

ECサイトやSNSには、日々多数のユーザーからの口コミやレビューの情報が投稿されています。今や、顧客が製品サービスを選ぶ時代であるため、ユーザーの直接のコメントは大きなマーケティングや商品開発に役立ちます。口コミやレビューをWebスクレイピングで抽出することで、商品の新規企画や見直し、販売価格の設定など、あらゆる用途で役立ちます。

画像収集

Webスクレイピングによる商品画像などの画像収集は、マーケティングに役立ちます。SNSやECサイトに存在する商品画像をSNSで関連づけられたハッシュタグやコメントなどと共に収集することで、商品の流行分析や広告露出調査などに活用できます。
また、商標の不正使用調査といったリスク管理にも活用できます。

記事クリッピング

最新情報はビジネスを有利に進めるために必要不可欠です。Webスクレイピングによって、Web上にある世界中のニュース記事やIR情報、プレスリリース情報を効率よく大量に収集することで、手作業によるリサーチの負荷を軽減します。

関連記事:Webスクレイピングの活用事例集。ビジネスで役立つ用途を解説

Webスクレイピング方法の種類

Webスクレイピングを行うには、主に2通りの方法があります。

プログラミング言語でプログラムを自作する

プログラミング言語を用いれば、Webスクレイピングツールを自分で構築することができます。
Webスクレイピングツールに必要な「Webクローラー」「Webスクレイパー」といったロボットをゼロから自作できるということです。

Webスクレイピングに適しているプログラミング言語の例として、Python、PHP、Ruby、JavaScriptなどが挙げられます。

関連記事:Webスクレイピングに適した言語特集!非エンジニアの対処法も解説

特に、Pythonという言語は、開発に役立つプログラムをまとめたライブラリやフレームワークが豊富にあり、少ないコードで簡潔にプログラムを構築できます。このライブラリやフレームワークには、Webスクレイピングロボット開発に適しているものが多くあり、Webスクレイピングツールの自作を実現しやすい言語といえます。よく利用されるライブラリには「Requests」、「Beautiful Soup」、「Selenium」などがあります。

Webスクレイピングサービス・ツールを利用する

プログラミング言語を扱うには、プログラミングスキルを習得する必要があるため、非エンジニアにとって、またはビジネス活用を急ぎたい人にとっては不向きです。

そこで、Webスクレイピングを行ってくれる外部サービスを利用したり、専用ツールを利用したりする方法もあります。

Webスクレイピングのやり方「Python」

Webスクレイピングをプログラミング言語で自作する方法をご説明します。よく利用されるPythonを用いたやり方の概要をご紹介します。

Pythonを利用する環境を構築する

Pythonのコードを記述・実行するためには、まず環境を構築する必要があります。専用のプログラムをPCやサーバーにインストールすることで環境を整えます。

多くの場合、Python公式サイトで配布されているプログラムをインストールする方法が取られます。公式サイトでインストーラをダウンロードしたら、インストールを行い、手順に沿って進めしょう。

また、本格的なプログラミング開発を行う際に欠かせない統合開発環境(IDE)も構築します。IDEには開発に必要なツールがそろっていることから、開発をスムーズに進められます。Pythonで使用できるIDEは複数ありますので、その中から適したものを利用しましょう。

ライブラリを活用してコードを記述する

Pythonの開発環境が整ったら、Webスクレイピングのためのロボットを作っていきます。WebクローラーとWebスクレイパーによるデータの取得、データの抽出の流れを「Requests」、「Beautiful Soup」、「Selenium」などのライブラリを利用して記述していきます。

「Requests」

データの取得、つまりダウンロードを行うために用いることができるライブラリで。自動的にダウンロードが可能になります。メソッドとして「get()」がよく使われ、サーバーからHTML、XMLなどの情報を取得するのに使用します。取得したいURLを指定し、コードを記述していきます。
取得したい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」

Requestsなどでデータをダウンロードしたら、データの抽出を行う必要があります。このデータ抽出を行えるのが「Beautiful Soup」です。「BeautifulSoup()」を用いて、解析対象のHTMLやXMLと利用する「パーサー」という解析器を指定し、コードを記述してプログラムを開発します。
同じく、取得するURLを「https://www.xxxxx.co.jp/」とし、「Requests」と「Beautiful Soup」を併用した記述例は以下になります。

import requests
from bs4 import BeautifulSoup

url = 'https://www.xxxxx.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'))

「Selenium」

Seleniumは、ブラウザを自動的に操作し、ログインを必要とするサイトやスクロールすることで自動的に次ページが読み込まれる仕組みが使われている特殊なWebページからのHTMLデータのダウンロードなどを行うことができます。
「get()」メソッドを用いてブラウザによって指定のWebサイトにアクセスし、Webページのhtml要素を取得するために「find_element()」メソッドを用いたり、Googleの検索キーワードを入力するフォームなどのhtml要素に文字列を書き込む「send_keys()」メソッドを用いたりして、情報を抽出するプログラムを作ります。
取得するURLを「https://www.xxxxx.co.jp/」とした「Selenium」のサンプルコードは以下になります。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://www.xxxxx.co.jp/'

# ブラウザ起動時のオプション
options = Options()
# ヘッドレスモードを指定(プログラムの負荷が軽くなる)
options.add_argument('--headless')
# 画面サイズで表示内容を変更するサイトもあるので、普段使いのサイズに合わせておくとよい
options.add_argument('--window-size=2560,1440')
# ブラウザを起動し、トップページにアクセス
driver = webdriver.Chrome(options)
driver.get(url)
print(driver.title)

# 検索フォームにテキストを入力
input_form = driver.find_element(By.CSS_SELECTOR, 'input[type="search"]')
search_word = 'スクレイピング'
input_form.send_keys(search_word)
# 検索ボタンをクリックして検索を実行
submit_btn = driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
submit_btn.click()
# 検索結果が表示されるまで待機(10秒でタイムアウト)
WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located)
print(driver.title)

# 検索結果の一覧を取得
links = driver.find_elements(By.CSS_SELECTOR, '.sw-Card__title > a')
for link in links:
# タイトル、URLを取得
title = link.find_element(By.CSS_SELECTOR, 'h3').text
url = link.get_attribute('href')
print(f'タイトル - {title}, URL - {url}')

Webスクレイピングのやり方「Webスクレイピングサービス・ツール」

Webスクレイピングサービスやツールを利用してWebスクレイピングを実施する方法をご紹介します。Webスクレイピングのサービスやツールによってやり方は異なりますが、ここではWebスクレイピングサービスを利用した場合の一例になります。

基本的には、データ収集先を選定した後、データ収集、蓄積、データ整形、データ閲覧といった流れです。それぞれの工程は以下になります。

1.データ収集先を選定

どのWebサイトからデータを取得したいのか、サイトURLを指定します。

2.データ収集

指定されたURLのサイトについてクローリングとスクレイピングを行い、データを抽出し、取得します。

3.蓄積

集めてきたデータは、一度、クラウド上のDWH(データウェアハウス)というところに蓄積していきます。データウェアハウスとは、定期的に取得したデータを時系列に蓄積していくデータサーバーのことを指します。この時点では、集められたデータはそのまま蓄積されていきます。

4.データ整形

集められたデータは、そのままでは、データ処理を行うことは困難です。データ処理を行うために、最適な形式にするためにデータクレンジングという整形作業を行います。

5.データ閲覧

整形されたデータが最終的に提供される際には、人が活用したり閲覧したりすることができるように、社内システムに取り込めるフォーマットに変換して提供されます。例えば、CSV、JSON、APIなどの形式に対応しているサービスがあります。

Webスクレイピングの注意点

ここまでWebスクレイピングのやり方を2種類紹介しました。環境を構築して自らスクレイピングを行う場合は、以下のような点を遵守して取り組むようにしましょう。

適切なアクセス頻度

Webスクレイピングを高頻度で行ってしまうと、収集先のWebサイトのサーバーに多くのリクエストがされることになり、サーバーへの高負荷によってWebサイトが閲覧しにくくなる恐れがあります。
以下のような点を意識して、アクセス頻度を管理するとよいでしょう。

・リクエストの間隔をあける
・同時に大量のWebスクレイピングを行わず、タイミングをずらす
・対象Webサイトのアクセスが少ない時間帯にずらしてみる
・APIの利用も検討する

これらのような対応を怠ると、Webサイトがダウンして収集先サイトの業務妨害にもつながりかねないため、注意しましょう。

個人情報・著作物の取り扱い

個人情報を本人の同意なく取得する行為は法律で禁止されており、スクレイピング対象から除外する必要があります。また、著作権のあるコンテンツにおいても、適切な利用が求められます。
関連記事:Webクローリング・Webスクレイピングをする際の注意点まとめ

まとめ

Webスクレイピングの基礎知識や、やり方をご紹介しました。Webスクレイピングに対して一定の経験・スキルがある場合は、自らプログラムを構築して実行するのもよいでしょう。

しかし、非エンジニアやビジネス活用を急ぐという経験や時間が不足している場合において、Webスクレイピングを自力で行うのは難しいでしょう。さらには、Webページごとにサイト構造が異なるために調整する必要があるほか、Webスクレイピング対策を講じているサイトがあれば、別途対応する必要性も出てきます。

以上のような状況で、Webスクレイピングを効率的に実施するためには、Webスクレイピングサービスやツール利用がおすすめです。Webスクレイピングサービスなら「ShtockData」をご選定ください。

ShtockDataを用いることで、人手による情報リサーチが不要になり、自動化による人的コスト削減につながります。また、仮想サーバー技術、自動拡張機能を有することから、大規模なデータ運用基盤を構築できる拡張性の高さもポイントです。

また、データの見える化・分析まで一連のソリューションを提供しますので、データをビジネスに有効活用することが可能です。詳細は、サービス紹介をご覧ください。

お問い合わせフォーム

お問い合わせ
設立

平成12年11月22日

資本金

6,700万円

代表者

小林 一登

住所

105-0003 東京都港区西新橋一丁目8番1号 REVZO虎ノ門4F

お問い合わせ

03-6384-5911
9:00〜18:00(JST)

事業内容

自然言語処理エンジンの研究開発
ビッグデータの収集・整理・蓄積・可視化
ルーチン業務の自動処理システム提案

主要取引先

共同ピーアール株式会社/ 株式会社ファーストリテイリング/ アデコ株式会社/ カシオ計算機株式会社/ 日本放送協会/ 株式会社ZOZO/ 株式会社東芝/ パナソニック株式会社/ 株式会社リクルート住まいカンパニー/ 総務省統計局/ 中部国際空港株式会社