今やデータ活用はビジネスにおいて必要不可欠となっており、その多くのデータは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スクレイピングを用いれば、ECサイトなどに記載の製品やサービスの価格情報を自動抽出し、分析することによって、データに基づいた市場投入や価格設定が可能になります。
不動産市場の調査にも役立ちます。例えば不動産ポータルサイトには、膨大な量の物件情報が存在します。家賃や売買価格などの価格情報から、新着物件、顧客にとって最適な物件などの物件情報までをWebスクレイピングで自動抽出することによって、仲介業者にとっては顧客提案の効率化につながります。また不動産売買や投資に関わる事業者や個人にとっては、必要な情報を大量に取得できることから売買や投資を有利に進められます。
ECサイトやSNSには、日々多数のユーザーからの口コミやレビューの情報が投稿されています。今や、顧客が製品サービスを選ぶ時代であるため、ユーザーの直接のコメントは大きなマーケティングや商品開発に役立ちます。口コミやレビューをWebスクレイピングで抽出することで、商品の新規企画や見直し、販売価格の設定など、あらゆる用途で役立ちます。
Webスクレイピングによる商品画像などの画像収集は、マーケティングに役立ちます。SNSやECサイトに存在する商品画像をSNSで関連づけられたハッシュタグやコメントなどと共に収集することで、商品の流行分析や広告露出調査などに活用できます。
また、商標の不正使用調査といったリスク管理にも活用できます。
最新情報はビジネスを有利に進めるために必要不可欠です。Webスクレイピングによって、Web上にある世界中のニュース記事やIR情報、プレスリリース情報を効率よく大量に収集することで、手作業によるリサーチの負荷を軽減します。
関連記事:Webスクレイピングの活用事例集。ビジネスで役立つ用途を解説
ShtockDataを導入いただいた企業様の事例を1冊にまとめました。ShtcokDataを導入した成果や現場での活用法のリアルをお届けします。
Webスクレイピングを行うには、主に2通りの方法があります。
プログラミング言語を用いれば、Webスクレイピングツールを自分で構築することができます。
Webスクレイピングツールに必要な「Webクローラー」「Webスクレイパー」といったロボットをゼロから自作できるということです。
Webスクレイピングに適しているプログラミング言語の例として、Python、PHP、Ruby、JavaScriptなどが挙げられます。
関連記事:Webスクレイピングに最適なプログラミング言語特集!おすすめはどれ?
これらのプログラミング言語の中でもPythonが特に人気で、その理由はWebスクレイピングツールを自力で作成しやすい特徴があるためです。
Pythonは開発に役立つプログラムをまとめたライブラリやフレームワークが豊富にあり、少ないコードで簡潔にプログラムを構築できます。このライブラリやフレームワークには、Webスクレイピングロボット開発に適しているものが多くあり、よく利用されるライブラリには「Requests」、「Beautiful Soup」、「Selenium」などがあります。
もう一つの方法として、自力でWebスクレイピングを実行するのではなく、Webスクレイピングサービス・ツールを利用することです。
上述のようなWebスクレイピングを自力で実行するためには、相応のプログラミング言語の学習を行い、プログラミングスキルを習得する必要があります。プログラミング初心者や非エンジニア、ビジネス活用を急ぎたい方などにとって、自力でのWebスクレイピングは不向きです。
では、Webスクレイピングをプログラミング言語で自作する方法として、よく利用されるPythonを用いたやり方をご紹介します。環境構築からコード記述の手順を簡単に解説します。詳細については、以下の記事も合わせてご確認ください。
関連記事:PythonでWebスクレイピングを行う方法まとめ!基礎から手順を解説
Pythonのコードを記述・実行するためには、まず環境を構築する必要があります。専用のプログラムをPCやサーバーにインストールすることで環境を整えます。
多くの場合、Python公式サイトで配布されているプログラムをインストールする方法が取られます。公式サイトでインストーラをダウンロードしたら、インストールを行い、手順に沿って進めしょう。
また、本格的なプログラミング開発を行う際に欠かせない統合開発環境(IDE)も構築します。IDEには開発に必要なツールがそろっていることから、開発をスムーズに進められます。Pythonで使用できるIDEは複数ありますので、その中から適したものを利用しましょう。
Pythonの開発環境が整ったら、Webスクレイピングのためのロボットを作っていきます。WebクローラーとWebスクレイパーによるデータの取得、データの抽出の流れを「Requests」、「Beautiful Soup」、「Selenium」などのライブラリを利用して記述していきます。
データの取得、つまりダウンロードを行うために用いることができるライブラリで。自動的にダウンロードが可能になります。メソッドとして「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)
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は、ブラウザを自動的に操作し、ログインを必要とするサイトやスクロールすることで自動的に次ページが読み込まれる仕組みが使われている特殊な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サイトからデータを取得したいのか、サイトURLを指定します。
指定されたURLのサイトについてクローリングとスクレイピングを行い、データを抽出し、取得します。
集めてきたデータは、一度、クラウド上のDWH(データウェアハウス)というところに蓄積していきます。データウェアハウスとは、定期的に取得したデータを時系列に蓄積していくデータサーバーのことを指します。この時点では、集められたデータはそのまま蓄積されていきます。
集められたデータは、そのままでは、データ処理を行うことは困難です。データ処理を行うために、最適な形式にするためにデータクレンジングという整形作業を行います。
整形されたデータが最終的に提供される際には、人が活用したり閲覧したりすることができるように、社内システムに取り込めるフォーマットに変換して提供されます。例えば、CSV、JSON、APIなどの形式に対応しているサービスがあります。
ShtockDataを導入いただいた企業様の事例を1冊にまとめました。ShtcokDataを導入した成果や現場での活用法のリアルをお届けします。
ここまでWebスクレイピングのやり方を2種類紹介しました。環境を構築して自らスクレイピングを行う場合は、以下のような点を遵守して取り組むようにしましょう。
Webスクレイピングを高頻度で行ってしまうと、収集先のWebサイトのサーバーに多くのリクエストがされることになり、サーバーへの高負荷によってWebサイトが閲覧しにくくなる恐れがあります。
以下のような点を意識して、アクセス頻度を管理するとよいでしょう。
・リクエストの間隔をあける
・同時に大量のWebスクレイピングを行わず、タイミングをずらす
・対象Webサイトのアクセスが少ない時間帯にずらしてみる
・APIの利用も検討する
これらのような対応を怠ると、Webサイトがダウンして収集先サイトの業務妨害にもつながりかねないため、注意しましょう。
個人情報を本人の同意なく取得する行為は法律で禁止されており、スクレイピング対象から除外する必要があります。また、著作権のあるコンテンツにおいても、適切な利用が求められます。
関連記事:Webクローリング・Webスクレイピングをする際の注意点まとめ
ShtockDataで人気のコラムを5つ厳選して1冊にまとめました。「スクレイピング」「クローリング」の概要から気になる法令関連や注意点など基礎知識を集約しています。
ぜひお気軽にダウンロードしてみてください。
Webスクレイピングの基礎知識や、やり方をご紹介しました。Webスクレイピングに対して一定の経験・スキルがある場合は、自らプログラムを構築して実行するのもよいでしょう。
しかし、非エンジニアやビジネス活用を急ぐという経験や時間が不足している場合において、Webスクレイピングを自力で行うのは難しいでしょう。さらには、Webページごとにサイト構造が異なるために調整する必要があるほか、Webスクレイピング対策を講じているサイトがあれば、別途対応する必要性も出てきます。
以上のような状況で、Webスクレイピングを手軽に行いたい場合は、ぜひWebスクレイピング&Webクローリングツール「ShtockData」をご検討ください。初期費用0円で利用を開始することができ、簡単に高精度なWebデータを収集することができます。
もし設定からデータ集計含めて全てお任せしたい場合はWebスクレイピング&Webクローリング代行サービス「ShtockData Pro」をご検討ください。複雑な条件があっても、収集したいWebデータと要望をお伝えするだけで手間なく実行できます。
詳細は以下の資料をご覧ください。ご不明な点がございましたら、お気軽にお問い合わせ、ご相談ください。
Webスクレイピング&Webクローリングをすぐに誰でもできるツール型のShtockDataについて1冊にまとめました。特徴や費用感、導入後の運用イメージなどを集約しています。
ぜひお気軽にダウンロードしてみてください。
Webスクレイピング&Webクローリングをすべてお任せできる代行サービス型のShtockData Proについて1冊にまとめました。特徴や選ばれる理由、事例などを集約しています。
ぜひお気軽にダウンロードしてみてください。