自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/VBA/GAS/JavaScript/Raspberry Piなどで色んなことを自動化

Webスクレイピングの必須知識 利用規約やrobots.txtの確認方法 Webスクレイピング超入門④

Webスクレイピング超入門シリーズ④の題材は「そのサイトってスクレイピングしていいんだっけ」です。 過去3回ではスプレッドシートやGASを使ってお手軽にWebサイトのデータを自動取得する方法を紹介しました。

  1. Webページデータ取得: 初心者向けWebスクレイピング手法
  2. 国民の祝日データを文字化け回避
  3. Webスクレイピングの必須知識「XPath」のチートシート

が、自動取得できることと自動取得してOKかどうかは別でして、どうやってスクレイピングOK/NGを確認すれば良いのか という話。

端的に言えばタイトルのとおり「利用規約」「robots.txt」を確認することになりますが、その見方を紹介します。

スクレイピングとは?

スクレイピングとは、ウェブサイト上のデータをプログラムを使って自動的に取得する技術のことを指します。例えば、以下のような場面で役立ちます:

  • 価格比較:複数のECサイトから商品価格を収集し、比較する。
  • データ分析:ニュースサイトやSNSからデータを収集し、トレンドを分析する。
  • 業務効率化:手動で収集していたデータを自動化することで、作業時間を短縮する。

ただし、スクレイピングは便利な反面、法律や倫理的な問題が絡む場合があります。そのため、正しい知識を持って行うことが重要です。

スクレイピングして良いサイトとダメなサイトの見分け方

スクレイピングを行う前に、そのサイトがスクレイピングを許可しているかどうかを確認する必要があります。以下のポイントをチェックしましょう。

1. 利用規約を確認する

多くのウェブサイトには利用規約が記載されています。スクレイピングしたいウェブサイトの利用規約ページやガイドラインページにアクセスして、ページ内検索(Ctrl + F)で「スクレイピング」「自動」などで検索してみましょう。

利用規約に「スクレイピング禁止」や「データの自動収集を禁じる」といった文言がある場合、そのサイトのスクレイピングは行わないようにしましょう。

2. robots.txtを確認する

ウェブサイトのルートディレクトリ(例: https://example.com/robots.txt)には、robots.txtというファイルが存在する場合があります。このファイルには、検索エンジンやクローラーがアクセスして良いページや禁止されているページが記載されています。

最近ではAIがデータを取りに来ることも多くなってきていて、ChatGPTのbotはお断りみたいな記載もチラホラ見かけますね。

robots.txtの構造

User-agent: *
Disallow: /private/
Allow: /public/

User-agent:

  • クローラーの名前を指定します。例えば、Googleのクローラーは Googlebot 、Bingのクローラーは Bingbot
  • * ではなく Googlebot と記載がある場合は Googlebot のみに適用されるルールということになります。
  • 個人がプログラムやRPAなどを用いて実行する場合は * の記載を確認しましょう。

Disallow:

  • アクセスを禁止するディレクトリやページを指定します。
  • Disallow: /private/ とあった場合は /private/ 以下のページはすべて禁止となります。

Allow:

  • アクセスを許可するディレクトリやページを指定します。
  • Allow: /public/ とあった場合は /public/ 以下のページはすべて許可となります。

ただし、robots.txtはあくまで「お願い」に過ぎないため、法律的な拘束力はありません。しかし、倫理的な観点から従うべきです。

robots.txtの設定例

特定のファイルだけ許可や禁止などかなり細かく設定できます。複雑な設定があって自分で判断しづらい場合は取得したいページのURLとrobots.txtをChatGPTとかに渡して確認してもらうのも良いかもしれません。

1. すべてのクローラーに対して全ページを許可

すべてのクローラーがサイト内のすべてのページにアクセスできる設定です。

User-agent: *
Disallow:

2. すべてのクローラーに対して全ページを禁止

すべてのクローラーがサイト内のどのページにもアクセスできない設定です。

User-agent: *
Disallow: /

3. 特定のディレクトリを禁止

/private/ディレクトリ以下へのアクセスを禁止します。

User-agent: *
Disallow: /private/

4. 特定のページを禁止

特定のページ(例: /secret-page.html)へのアクセスを禁止します。

User-agent: *
Disallow: /secret-page.html

5. 特定のクローラーを禁止

特定のクローラー(例: Googlebot)だけを禁止します。

User-agent: Googlebot
Disallow: /

6. 特定のクローラーを許可

すべてのクローラーを禁止し、特定のクローラー(例: Bingbot)のみを許可します。

User-agent: *
Disallow: /

User-agent: Bingbot
Disallow:

7. 特定のディレクトリを許可

すべてのクローラーに対して、/public/ディレクトリのみアクセスを許可します。

User-agent: *
Disallow: /
Allow: /public/

8. 特定のファイルタイプを禁止

特定のファイルタイプ(例: .pdfファイル)へのアクセスを禁止します。

User-agent: *
Disallow: /*.pdf$

日本の法律や海外の規制について

スクレイピングを行う際には、以下の法律や規制に注意する必要があります。

1. 著作権法

ウェブサイト上のコンテンツ(文章や画像など)は著作権で保護されています。スクレイピングで取得したデータをそのまま公開したり、商用利用したりする場合、著作権侵害に該当する可能性があります。

2. 不正アクセス禁止法

スクレイピングの際に、ウェブサイトの認証システムを回避したり、不正にアクセスしたりする行為は、不正アクセス禁止法に違反する可能性があります。

3. 海外の規制

海外のウェブサイトをスクレイピングする場合、その国の法律にも注意が必要です。例えば、EUではGDPR(一般データ保護規則)により、個人データの収集や利用に厳しい規制が設けられています。

まとめ

robots.txtは、ウェブサイト管理者がクローラー(検索エンジンやスクレイピングツールなど)のアクセスを制御するための重要なファイルです。適切に設定することで、サイトのパフォーマンスを維持しつつ、不要なアクセスを防ぐことができます。また、スクレイピングを行う側にとっても、robots.txtを確認することは法律や倫理的な観点から非常に重要です。 本記事で紹介したポイントを振り返ると、以下が重要な要素となります:

  • スクレイピングを行う際の基本ルール
    • 利用規約やrobots.txtを確認し、アクセスが許可されている範囲内で行うこと。
  • robots.txtの役割と設定例
    • User-agentやDisallow、Allowなどの基本的な構文を理解し、サイトの目的に応じた設定を行うこと。
  • 法律や倫理的な配慮
    • 著作権法や不正アクセス禁止法を遵守し、スクレイピングが許可されていないサイトにはアクセスしないこと。
  • クローラーの種類に応じた柔軟な設定
    • 特定のクローラーに対して異なるルールを設定することで、効率的なアクセス管理が可能。

スクレイピングは非常に便利な技術ですが、正しい知識とルールを守らなければトラブルに発展する可能性があります。ウェブサイトの管理者もスクレイピングを行う側も、robots.txtを適切に活用し、インターネットの健全な利用を心がけましょう。

最後に、スクレイピングを行う際には、技術的なスキルだけでなく、法律や倫理的な責任を持つことが大切です。正しい方法でスクレイピングを活用し、データの収集や分析を安全かつ効率的に行いましょう!