ウェブスクレイピング:やるべきこととやってはいけないこと

スクレイピング, 11月-1520225分で読める

ウェブスクレイピングまたはウェブデータ抽出は、ウェブサイトからデータを収集する自動化されたプロセスです。企業がウェブスクレイピングを利用するのは、一般に公開されている膨大な量のデータから、より賢い意思決定を行うことで利益を得るためである。データを整理された形で抽出できるため、分析が容易になります。ウェブスクレイピングには多くの利点がある

目次

ウェブスクレイピングまたはウェブデータ抽出は、ウェブサイトからデータを収集する自動化されたプロセスです。企業がウェブスクレイピングを利用するのは、一般に公開されている膨大な量のデータから、より賢い意思決定を行うことで利益を得るためである。データを整理された形で抽出できるため、分析が容易になる。ウェブスクレイピングには多くの用途がある。例えば、Eコマースの世界では競合他社の価格モニタリングに利用できる。企業は、競合他社の製品やサービスの価格をチェックすることで、価格戦略を微調整し、先手を打つことができる。さらに、市場調査機関は、フィードバックやオンライン製品レビューを追跡することで、顧客感情を測定することができます。

一般的に、ウェブスクレイピングのプロセスには以下のステップが含まれる。

  • 対象ウェブサイトの特定 
  • データを抽出するページのURLを集める
  • ページのHTMLを取得するために、これらのURLにリクエストする。
  • ロケータを使ってページHTMLにデータを集める
  • CSVやJSONファイルのような構造化された形式でデータを保存する。

ウェブスクレイピングは何に使われるのか?

以下にウェブスクレイピングの使用例を挙げる。

市場調査 - 市場調査は不可欠であり、利用可能な最も正確なデータによって推進される必要がある。大量かつ高品質で、洞察力の高いウェブ・スクレイピング・データがあれば、組織は適切な市場調査を行い、顧客感情を測定することができる。市場アナリストは、ウェブスクレイピングで以下のタスクを実行できる。

  • 研究開発
  • 競合他社のモニタリング
  • 市場価格 
  • 市場動向分析

不動産 - 不動産業者は、ウェブスクレイプされたデータを日常業務に取り入れることで、市場内で情報に基づいた意思決定を行うことができる。彼らは、様々なウェブサイトからスクレイピングされたデータを使用して、以下のタスクを実行します。

  • 賃貸利回りの推定
  • 市場の方向性を理解する
  • 資産価値評価
  • 空室率のモニタリング

コンテンツとニュースのモニタリング - Webスクレイピングは、企業が頻繁にニュースに登場したり、タイムリーなニュース分析に依存している場合、業界からの重要なストーリーをモニタリング、集約、解析するための究極のソリューションである。組織はウェブ・スクレイピングを次のような目的で利用できる。

  • 競合他社のモニタリング
  • 一般市民の感情分析
  • 政治キャンペーン
  • 投資の意思決定

最低広告価格(MAP)モニタリング - MAPモニタリングは、ブランドのオンライン価格がその価格設定方針に沿っていることを確認します。多くのセラーやディストリビューターが存在するため、手動で価格を監視することは不可能です。そのため、自動化されたウェブスクレイピングプロセスを使用して、製品の価格を監視することができます。

ウェブスクレイピング

データをスクレイピングすると、ウェブサイトの機能を損なう可能性があるため、ウェブから慎重にデータを抽出する必要があります。そのため、ウェブスクレイピングのすべての注意事項を知っておく必要があります。

自己識別 - ウェブからデータをスクレイピングする際には、自分自身を識別することが大切です。識別ルールに従わない場合、ターゲットのウェブサイトはあなたのウェブクローラーをブロックすることができる。クローラーのヘッダーにあなたの連絡先を記入する必要がある。システム管理者やウェブマスターはクローラーの情報に簡単にアクセスでき、クローラーが直面する問題をあなたに通知することができる。

IPローテーション - 多くのウェブサイトは、悪意のある攻撃からウェブサイトを保護するために、アンチスクレイピングメカニズムを採用している。ウェブスクレイピングの基本的なメカニズムを知らないと、ウェブサイトによって即座にブロックされる可能性があります。また、リクエストのたびに同じIPを使用すると、ウェブサイトからブロックされる可能性があります。そのため、ターゲットのウェブサイトに複数のリクエストを送信するには、新しいIPを使用する必要があります。この目的のために、プロキシを使用することができます。プロキシはウェブサイトの所有者から身元を隠し、IPアドレスのプールを割り当てます。そのため、ブロックされたり禁止されたりすることなく、異なるIPアドレスを使用してウェブサイトに複数のリクエストを送信することができます。

robots.txtの検査 - ウェブスクレイピングを行いたい場合は、robots.txtファイルを詳細に検査する必要がある。robots.txtは、検索エンジンにボットを使ってクロールできるファイルとできないファイルを知らせるファイルである。ほとんどすべてのウェブサイトがこのファイルを持っているので、このファイルからウェブスクレイピングのルールを習得することができる。robots.txtファイルには、1秒間に送信可能なリクエスト数や訪問可能なページに関連する重要な情報が含まれています。

CSSフック - CSSセレクタを使ってウェブページのHTML要素を見つけ、そこからデータを収集することができる。要素を選択すると、ウェブスクレーパーは選択された要素のCSSセレクタを推測しようとします。jQueryで利用可能なCSSセレクタと、CSSバージョン1~4(ブラウザでサポート)で利用可能なCSSセレクタを使用できます。 

ウェブスクレイピングの注意点

ウェブスクレイピングの注意点を以下に示す。

ウェブサイトに負担をかけない - データをスクレイピングしているウェブサイトに害を与えてはならない。時には、リクエストの頻度や量がウェブサーバーに負担をかけることがあります。複数のページからデータにアクセスしたい場合は、異なるIPアドレスを提供するプロキシを使用することもできます。

一般データ保護規則に違反しないように - GDPRに違反してEU市民のデータを抽出することは違法であるためできません。GDPRの導入により、EU市民のスクレイピングされたデータは完全に変更され、改変される。データを記述することができる貴重な変種は、名前、番号、年齢、電子メール、連絡先、IPアドレスなどです。 

うさんくさいテクニックを使わない - 何百万ものインターネットツールやトリックを使えば、マウスを数回クリックするだけで、ウェブサイトのすべてのセキュリティプロトコルを迂回することができる。しかし、ウェブ管理者はあなたのトリックを簡単に発見することができ、ほとんどの場合、彼らはあなたのトリックを避けることによってあなたを欺くことができます。また、ウェブサイトに害を及ぼす可能性のある行為に気づけば、あなたをブロックすることもできます。したがって、ターゲットとなるウェブサイトの評判を維持するツールやサービスに固執する必要があります。

サイトをハマーしない - ウェブサイトのライブの変更を検出することと、サービス拒否(DOS)攻撃を実行することには大きな違いがある。ウェブスクレイパーとして、あなたはリクエストの間に軽い遅延があることを知っておく必要があります。ウェブサイトはあなたの定期的なリクエストを検知し、IDSインフラがあればあなたのIPをブロックします。 

ウェブスクレイピング用プロキシ

プロキシは、リクエストを送信するクライアントとリクエストを受信するサーバーの間で、仲介役や第三者のサーバーとして機能することはご存じだろう。効率的にデータを抽出し、ブロックされる可能性を減らすため、ウェブスクレイピングには不可欠です。プロキシは多くのIPアドレスを提供するので、禁止されることなく、異なるIPアドレスを使用してターゲットウェブサイトに複数のリクエストを送信することができます。また、プロキシを使用することで、地理的に制限されたウェブサイトのコンテンツにアクセスすることもできます。 

要するに、プロキシがウェブスクレイピングに有用なのは、以下の2つの理由による。

  • ターゲットウェブサイトからソースマシンのIPアドレスを隠す。
  • ターゲットとなるウェブサイトの料金制限を突破するのに役立つ。

ウェブスクレイピングのためのプロキシには、次のような種類があります。

データセンターIP - データセンターでホストされているサーバーIPアドレスです。 

レジデンシャルIP - データセンターIPよりも高価で、一般家庭のIPアドレスです。データセンターIPより高価で、一般家庭のIPアドレスです。

モバイルIP - プライベート・モバイル・デバイスのIPです。モバイルIPアドレスのコストは他のIPに比べて高すぎる。

プロキシの統合

以下の手順で、プロキシを既存のウェブスクレイピングソフトウェアに統合することができます。

  • ウェブスクレーパーのリクエストをプロキシに通す
  • リクエスト間でプロキシサーバーのIPアドレスを適切にローテーションする

最初のステップは簡単で、Pythonのrequestsモジュールをインポートし、プロキシ接続URLを渡すだけです。次に、以下のステップに示すように、対象のウェブサイトにgetリクエストを送信する必要があります。

import requests

proxies = {'http': 'http://user:[email protected]:3128/'}

requests.get('http://example.org', proxies=proxies)

2つ目のステップは少し複雑で、ある時間にどれだけの並列処理を行うか、ターゲットとなるウェブサイトのレート制限とどれだけのマージンを保ちたいかに依存する。

結論

ウェブスクレイピングを使えば、第三者のウェブサイトからデータを収集し、ニーズに合わせて利用することができる。検索エンジンの結果最適化、Eコマースの価格監視、リードジェネレーション、ニュースの集約などに威力を発揮する。ウェブスクレイピングは、ウェブサイトからデータを収集する間、特定の「やるべきこと」と「やってはいけないこと」に注意する必要があるため、それほど単純ではありません。サイトに害を与えたり、データを変更したりしない方法で、ウェブサイトからデータを抽出する必要があります。プロキシは、あなたの身元を隠し、あなたが禁止されたりブロックされたりするのを防ぐので、ウェブサイトからデータを抽出するためにかなり便利です。あなたのニーズに応じて、住宅プロキシまたはデータセンタープロキシのいずれかを使用することができます。