【スクレイピング】
Webサイトから情報を自動取得
実装の紹介とコンプライアンス的問題点について論じてみる

記事イメージ

お疲れ様です。堺です。

情報活用基盤が活性化しデータ収集の自動化の余地が増える一方、SNSなど眺めていると安易なスクレイピングに取り組んでいる人もいて、法務面とか危なっかしいな・・・という思いもあります。

そこで今回は、スクレイピングとは?実装方法は?実行するにあたっての注意点は?という点について横断的に整理してみたいと思います。

本記事の目的:スクレイピングの機能と実装方法、実務上の注意点の理解

スクレイピングの解説

スクレイピング技術は、Webページに自動でアクセスして情報を取ってくる技術であり、API活用と並ぶデータ自動化技術です。(APIについては下の関連記事をご参照ください。)

関連記事:【API技術は中小企業こそ活用するべき!】APIを活用して企業活動を効率化・自動化し、持続可能な経営へ

今回は、スクレイピング用途で代表的なモジュールであり、私自身も使いやすいと感じるPythonのBeautiful Soup 4を利用して紹介します。

実装1:まずはWebサイトにアクセスしてページ内容を取得してみる

httpリクエストを投げることができるurllibライブラリを使用して、当社コーポレートサイトのHTMLを取得してみます。

Python
from urllib import request

with request.urlopen('https://www.sakai-sc.co.jp/') as response:
    print(response.read().decode())

取得結果:指定したURLのHTMLが取得されています。
取得結果:指定したURLのHTMLが取得されています
【社内PR】チーム・ウォーク

実装2:取得したページ内容をBeautiful Soup 4で解析する

まずはBeautiful Soup 4をPythonにインストールします。

ターミナル
$ pip install bs4

次いで先ほどのPythonコードに解析処理を追加していきます。

find関数でHTML文書の中の要素を指定して取得できるので、ほしい情報をHTMLソースであらかじめ目星を付けてスクリプトを用意します。find関数は、class指定や属性値などをオプションを指定できるので、かなり細かく値を取得することができます。

また、複数の要素を解析するにはfind_all関数を使用すると便利です。

Python
from urllib import request
from bs4 import BeautifulSoup
import pprint

#ページを読み込んでBeautifulSoupオブジェクトを生成(read関数は内部で呼んでくれるため不要です)
with request.urlopen('https://www.sakai-sc.co.jp/') as response:
    bs = BeautifulSoup(response)

#titleタグの内容を取得
print(bs.title.text)

#h2タグのテキストをすべて取得
print(bs.find_all('h2'))
#spanタグの内、classがmain-titleとなっている要素を取得
print(bs.find('span', class_='main-title').string)
#リンク要素(aタグ)のhref要素(リンク先)をすべて取得
print([a_tag_value.get('href') for a_tag_value in bs.find_all('a')])

実行結果は以下の通りです。出力部分を暖色ハイライトしています。
実行結果は以下の通りです

BeautifulSoupの細かい使い方を知りたい方は、こちら(外部リンク)で日本語ドキュメントを参照できます。

スクレイピングと法令等に関する問題

スクレイピングが他人のWebサイトをターゲットとする以上、著作権の問題や対象サイトへの運営妨害行為にならないか、利用規約などには注意深く気を配る必要があります。

著作権に関しては、「情報解析の目的」であれば利用が許容されますが、その範疇を外れた、例えば自動でコンテンツを収集して自分のサイトに展示するなどの用途はNGである可能性が非常に高いです。(法律に関しては専門家にご相談ください)

また、Webサイトに自動でアクセスするという性質上、過剰なアクセス試行による相手のサーバー運営妨害にならないか、利用規約でスクレイピングを禁じていないかなど、必ず確認するようにしましょう。また必要に応じてサイト運営者の許可を取り付けましょう。

不用意にスクレイピングを仕掛けると、最悪の場合、賠償問題や刑事事件等にも発展する可能性もあることに十分ご注意ください。

この話題ではもはや定番であり、実際に逮捕者が出てしまった(但し後に不起訴)岡崎市立中央図書館事件(外部リンク)についても是非ご参照ください。

実務上の利用難度に対する所感と結び

この様に、技術的には可能ではあっても運用面の難しさでは依然として課題が多いのが現状という認識です。

現代の情報経済の更なる発展のためには、ソフトウェアが情報をより活用できるようにする体制づくり(例えばAPI設置とアクセス量に対する助成金など?)は国を挙げて取り組むべきではないかと、常々感じるところではあります。

今後の言論の進展があることを祈りつつ、自分としても少しずつ発言していくようにしたいと思います。

駄文にお目通しいただきありがとうございました。引き続きよろしくお願い申し上げます。

記事筆者へのお問い合わせ、仕事のご依頼

当社では、IT活用をはじめ、業務効率化やM&A、管理会計など幅広い分野でコンサルティング事業・IT開発事業を行っております。

この記事をご覧になり、もし相談してみたい点などがあれば、ぜひ問い合わせフォームまでご連絡ください。

皆様のご投稿をお待ちしております。

記事筆者へ問い合わせする

※ご相談は無料でお受けいたします。

この記事へのコメント

ニックネーム(任意)

返信通知先Emailアドレス(任意)

本文


* 感想やご意見等、お気軽にコメントください。但し、公序良俗に反するコメントはお控えください。
* 管理者が承認したコメントはこの箇所に公開させていただく可能性がございます。
* 返信通知先Emailアドレスは、筆者のみに通知され、公開されることはありません。返信通知先Emailを入力された場合は、コメントへの返信をこちらに掲載した際に通知させていただきます。その他の目的には使用いたしません。
* スパム対策のため、コメントは日本語のみ受け付けております。

堺財経電算合同会社 小規模IT構築サービス