\r\n\r\n

Webスクレイピングとは何か、Webサイトからデータを収集する方法について

Webページのデータを読むのに貴重な時間を浪費してしまったことはありませんか? ここでは、Webクローリングで必要なデータを探し出す方法をご紹介します...

ウェブスクレイパーは、ウェブサイトを訪問することで、通常はブラウザを通してのみアクセス可能な情報やデータを自動的に収集するものです。ウェブスクレイパースクリプトは、それを自律的に行うことで、データマイニング、データ解析、統計解析など、様々な可能性を切り開くことができるのです。

ネットスクレイピングが有効な理由

情報がより身近になった現代。あなたが読んでいるその言葉を届けるために使われているインフラは、人類がこれまでに接したことのないほど多くの知識、意見、ニュースへの導管となっているのです。

実際、最も賢い人の脳の効率を100%に高めたとしても(誰かそのための映画を作るべきだ)、アメリカだけでインターネットに保存されているデータの1000分の1を保持することはできないだろう。

シスコは2016年、インターネットのトラフィックが1ゼタバイト、つまり1,000,000,000バイト、つまり1垓(がい)バイトを超えたと推定しています(どうぞ、垓で笑ってください)。1ゼタバイトとは、Netflixのストリーミング配信の4,000年分に相当します。これは、もしあなたが勇敢な読者で、最初から最後までノンストップで50万回オフィスを閲覧したとしたら、それに相当します。

これだけのデータ、情報があると、とても怖いですね。全部が全部、正しいわけではありません。日常生活にはあまり関係のない情報ですが、この情報を世界中のサーバーから私たちの目や脳に送ってくれる機器がどんどん増えています。

私たちの目や脳ではこれらの情報を処理しきれないため、プログラミングによってインターネットからデータを収集する方法としてウェブクローリングが有効になっている。ウェブクローリングとは、ウェブサイトからデータを抽出し、ローカルに保存する行為を定義する抽象的な用語である。

ある種のデータについて考えてみると、ウェブをクロールすることで収集できるかもしれません。不動産物件、スポーツデータ、地元企業のメールアドレス、好きなアーティストの歌詞まで、小さなスクリプトを書くだけで検索して保存することができます。

ブラウザはどうやってウェブデータを取得しているのか?

ウェブスクレイパーを理解するためには、まず、ウェブの仕組みを理解する必要があります。このウェブサイトにアクセスするには、「makeuseof.com website」と入力するか、他のページへのリンクをクリックします(それがどこなのか教えてください、真剣に、私たちは知りたいのです)。いずれにせよ、次のいくつかのステップは同じです。

まず、あなたのブラウザは、あなたが入力したりクリックしたりしたURLを受け取り(プロからのアドバイス:パンク攻撃を避けるために、クリックする前にリンクの上にカーソルを置き、ブラウザの下部にあるURLを確認してください)、サーバーに送信する「要求」を形成します。その後、サーバーはリクエストを処理し、レスポンスを送信します。

サーバーの応答には、HTML、JavaScript、CSS、JSONなどのデータが含まれ、ウェブブラウザーはお客様が閲覧するウェブページを形成することができるようになります。

Web要素のチェック

最近のブラウザは、このプロセスの詳細をある程度理解できるようになっています。Windowsのgooglechromeでは、Ctrl+Shift+Iを押すか、右クリックして、Inspectを選択します。

オプションのタブの一覧は、ウィンドウの上部に表示されます。今注目しているタブは、「ネットワーク」タブです。これにより、以下のようなHTTPトラフィックの詳細な情報が得られます。

右下には、HTTPリクエストの情報が表示されます。URLは期待通りのもので、「メソッド」はHTTPの「GET」リクエストです。レスポンスのステータスコードには200と記載されており、これはサーバーがリクエストを有効と判断したことを意味します。

ステータスコードの下には、リモートアドレスが表示されます。これは、makeuseof.comのウェブサーバーの公開用IPアドレスです。クライアントは、DNSプロトコルを介してこのアドレスを取得する。

次章では、レスポンスに関する詳細を掲載します。レスポンスヘッダーには、ステータスコードだけでなく、レスポンスが含むデータまたはコンテンツの種類も含まれます。この例では、標準的なエンコーディングを使用した "text/html "を見ていきます。これは、レスポンスが実際にはウェブサイトをレンダリングするためのHTMLコードであることを物語っています。

その他の対応

さらに、サーバーはWebページがレンダリングするためのHTMLだけでなく、GETリクエストに対する応答としてデータオブジェクトを返すことができます。Webサイトのアプリケーション・プログラミング・インターフェース(API)には、この種のやり取りがよく使われている。

上図のように「ネットワーク」タブを読み込むことで、このようなやりとりがあるかどうかを確認することができます。CrossFit openのリーダーボードを調査する際、テーブルにデータを入力するリクエストが表示されます。

レスポンスをクリックすると、サイトのHTMLコードをレンダリングする代わりに、JSONデータが表示される。JSONのデータは、タグと値が階層的に配置され、輪郭を持ったリストになっている。

HTMLコードを手動で解析したり、何千ものJSONのキーと値のペアをトラバースすることは、行列を読むことに非常に似ています。一見すると、ちんぷんかんぷんなのだが。情報量が多く、手動でデコードできない場合があります。

インターネットのサーチャーが救う!?

さて、ここで青い薬に去ってもらう前に知っておいてほしいのは、HTMLコードを手動で解読する必要はない!ということです。知らぬが仏、このステーキは美味い。

このような難しい作業を代行してくれるのが、Webスクレイパーです。スクレイピングフレームワークは、Python、JavaScript、Nodeなどの言語が利用できます。スクレイピングを始める最も簡単な方法の1つは、PythonとBeautiful Soupを使用することです。

Pythonでウェブサイトをクロールする

PythonとBeautifulSoupがインストールされていれば、数行のコードで始めることができます。ここでは、サイトを取得し、BeautifulSoupに評価させるための小さなスクリプトを紹介します。

from bs4 import BeautifulSoupimport requestsurl = "http://www.athleticvolume.com/programming/"content = requests.get(url)soup = BeautifulSoup(content.text)print(soup)

ごく簡単に言うと、URLに対してGETリクエストをして、そのレスポンスをオブジェクトに入れるというものです。printオブジェクトは、URLのHTMLソースコードを表示します。このプロセスは、私たちが手動でWebサイトにアクセスし、「ソースコードを見る」をクリックするときと同じです。

具体的には、クロスフィットスタイルのワークアウトを毎日、1日だけ掲載しているサイトです。私たちは、毎日のワークアウトを取得し、ワークアウトのサマリーリストに追加するスクレイパーを構築することができます。基本的にはテキストベースでトレーニング履歴をデータベース化し、簡単に検索できるようにします。

BeaufiulSoupの魔法は、組み込みのfindAll()関数を使って、すべてのHTMLコードを検索できることです。この例では、"sqs block content "タグを複数使用しています。そのため、スクリプトはこれらすべてのタグを繰り返し処理し、目的のタグを見つける必要があります。

さらに、このセクションには、いくつかのトークンがあります。スクリプトは、各タグのすべてのテキストをローカル変数に追加することができます。そのために、スクリプトに簡単なループを追加します。

for div_class in soup.findAll('div', {'class': 'sqs-block-content'}): recordThis = False for p in div_class.findAll('p'): if 'PROGRAM' in p.text.upper(): recordThis = True if recordThis: program += p.text program += ''

ほら、スクリーンスクレイパーの誕生です。

エクステンドスクレイピング

進むべき道は2つある。

ウェブクローリングを探るには、すでに構築されているツールを利用するのも一つの方法です。ウェブスクレイパー(すごい名前!)。20万人のユーザーを持つ、使い勝手の良さが魅力です。さらに、Parse Hubでは、収集したデータをExcelやGoogleのワークシートにエクスポートすることが可能です。

また、webscraperは、ウェブサイト構築のプロセスを可視化するためのChromeプラグインを提供しています。名前からして最高なのは、直感的なインターフェイスを持つ強力なスキージであるOctoParseです。

最後に、ウェブクローリングの背景を理解したところで、自分自身の小さなウェブクローラーを改良して、自分自身でクロールして実行できるようにするのも楽しい実験です。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ