見出し画像

スクレイピングによるテーブルデータの取得を簡単に

はじめに

株式会社分析屋の新人BIエンジニアの竹原です。業務では、BIレポートの作成やBIツールの導入支援を行っています。大学時代には、スクレイピングや簡単な機械学習について学んでいました。その知識を活かし、趣味として行っているカードゲームの価格データを、スクレイピングによって取得してみました。今回は、簡単にスクレイピングを行う方法についてご説明させていただきます。




スクレイピングを始めたきっかけ

大学時代から、趣味でカードゲームを行っています。カードゲームで遊んでいる人は皆、「欲しいカードはあるけど、少しでも安く買いたい」と考えているでしょう。しかし、どのサイトでカードを購入するのが一番安いのか、各サイトを訪れて確認していく必要があり、時間がかかります。そこで、スクレイピングによる各サイトの価格取得を行うことで、効率よくカードの価格を確認しようと考え、学び始めました。


実行環境について

スクレイピングを行ったPCの環境は、以下の通りです。
 開発環境:JupyterLab
 言語:Python


スクレイピング方法について

スクレイピングとは、Webサイトの特定の情報を抽出・取得する技術になります。スクレイピング技術を活かして、タグが「table」の表データを取得する方法を説明します。まず、簡単な用語から解説させていただきます。特に覚えていただきたい用語は、以下の2点です。

  • タグ:テキストに意味を与える印
    ex) <h1> 〇〇〇:タグ「h1」は、「〇〇〇」を見出しにする

  • データフレーム:行と列で構成される二次元データ

用語を押さえたところで、スクレイピングの流れについて説明します。大まかな流れは以下の通りになります。

  1. 取得したいデータが載っているWebサイトのを開き、スクレイピングして問題ないか確認する

  2. 取得したいテーブルのタグを確認する

  3. コードを記載する

  4. スクレイピングしたデータを保存する


スクレイピング可能なサイトかどうか確認

スクレイピングを行う前に確認していただきたいポイントは、利用規約でスクレイピングが禁止されているかどうかです。「自動ツール・ボットによるデータ収集は禁止」などの文言が記載されている場合、スクレイピングの実施は控えましょう。スクレイピング自体に違法性はありませんが、禁止されているWebサイトがあることを念頭に入れていただけると幸いです。


データのタグを確認

データを取得する前に、取得したいデータのタグを確認してください。タグの種類によって、データの取得方法が異なってきます。今回は、タグが「table」かどうかを確認してください。タグの確認方法は、以下の方法で確認可能です。

  1. 取得したいデータのあるWebサイトで右クリックする

  2. 一覧にある「検証」を開くと、Webサイトを作成したソースコードが表示される
    ※ソースコードにカーソルを合わせるとWebサイトの対象箇所がハイライトされる

  3. 取得したいデータがハイライトされた部分のタグが何で設定されているか確認する


コードの記載

タグを確認することができたら、続いてコードを記載していきます。今回記載するコードは、以下に記載したたったの4行です。

タグが「table」の表データは、pandasの「read_html()」で取得することができます。この引数にURLのみを指定した場合、Webサイト上のすべてのテーブルを取得します。この際、データフレームのリストとして返されます。そのため、必要な表データを取得するには、リストの選択をしてから出力をします。


データの保存

必要なデータを取得することができたら、データを保存しましょう。今回は、取得したデータフレームをエクセル形式で保存するコードを記載しています。必要があれば、保存の前にデータの整形を行います。


さいごに

こちらで、必要な表データを取得することができたと思います。考えている以上にスクレイピングによる表データの取得は簡単に行うことができると思っていただけていたら幸いです。皆様も自分に必要なデータを取得してみてください。今後、取得したデータを可視化するBIツールの使い方について記載するかもしれません。その際は、また一読いただけますと幸いです。




株式会社分析屋について

弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。

ホームページはこちら。


noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!

【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。

【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。

【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。

【SES】
SESサービスも行っております。

この記事が参加している募集