11

HTTrack など、Web サイトの静的コピーをダウンロードするためのツールがインターネット上に多数あります。Mozenda など、Web サイトからコンテンツを「スクレイピング」するための商用ツールも多数あります。次に、PHP や *nix などのプログラムに明らかに組み込まれているツールがあり、「file_get_contents」、「wget」、「cURL」、または単に「file()」を実行できます。

私はこれらすべてに完全に混乱しており、主な理由は、私が遭遇した記述のどれもが同じ語彙を使用していないことにあると思います. 少なくとも表面的には、彼らは皆同じ​​ことをしているように見えますが、そうではないかもしれません.

それが私の質問です。これらのツールは正確には何をしているのでしょうか? 彼らは同じことをしていますか?彼らは異なるテクノロジーを介して同じことをしていますか?同じことをしていない場合、どのように違うのでしょうか?

4

2 に答える 2

13

まず、「ミラーリング」と「スクレイピング」の違いを明確にしましょう。

ミラーリングとは、Web サイトのコンテンツ全体、または一部の重要なセクション (HTML、画像、スクリプト、CSS スタイルシートなどを含む) をダウンロードすることを指します。これは、多くの場合、貴重な (そしてしばしば制限された) インターネット リソースへのアクセスを保持および拡張するため、または追加のフェールオーバー冗長性を追加するために行われます。たとえば、多くの大学や IT 企業は、さまざまな Linux ベンダーのリリース アーカイブをミラーリングしています。ミラーリングは、(元のコンテンツ所有者の許可を得て) 自分のサーバーで Web サイトのコピーをホストすることを計画していることを意味する場合があります。

スクレイピングとは、ウェブサイトから興味深いデータをコピーして抽出することを指します。ミラーリングとは異なり、スクレイピングはサイトのコンテンツ全体ではなく、特定のデータセット (名前、電話番号、株価など) を対象とします。たとえば、米国国勢調査局の平均収入データや Google Finance の株価情報を「スクレイピング」できます。これは、ホストの利用規約に反して行われることがあり、違法になります。

この 2 つを組み合わせて、データのコピー (ミラーリング) を情報抽出 (スクレイピング) の問題から切り離すことができます。たとえば、データの抽出と分析が遅い場合や処理が集中する場合は、サイトをミラーリングしてからローカル コピーをスクレイピングする方が速いことに気付くかもしれません。

残りの質問に答えるには...

file_get_contentsPHP 関数は、fileローカルまたはリモート マシンからファイルを読み取るためのものです。ファイルは HTML ファイルの場合もあれば、テキスト ファイルやスプレッドシートなどの別のファイルの場合もあります。これは、「ミラーリング」または「スクレイピング」が通常指すものではありませんが、これらを使用して独自の PHP ベースのミラー/スクレーパーを作成することはできます。

wgetおよびcurlさまざまなオプション、条件、およびプロトコルを使用して、リモート サーバーから 1 つまたは複数のファイルをダウンロードするためのコマンドライン スタンドアロン プログラムです。どちらも信じられないほど強力で人気のあるツールですが、主な違いは、wgetWeb サイト全体をミラーリングするための豊富な機能が組み込まれていることです。

HTTrackの目的は に似てwgetいますが、コマンドラインの代わりに GUI を使用します。これにより、ターミナルからコマンドを実行することに慣れていない人でも使いやすくなりますが、 が提供するパワーと柔軟性が失われwgetます。

HTTrackとをミラーリングに使用できますwgetが、それが最終的な目標である場合は、ダウンロードした結果のデータに対して独自のプログラムを実行して情報を抽出 (スクレイピング) する必要があります。

Mozendaはスクレーパーであり、またはとは異なりHTTrack、すべてのコンテンツをやみくもにコピーするのではなく、抽出する特定のデータをターゲットにすることができます。しかし、私はそれについてほとんど経験がありません。wgetcurl

PS 私は通常wget、関心のある HTML ページをミラーリングするために使用し、Ruby と R スクリプトを組み合わせて実行して、データを抽出および分析します。

于 2013-09-30T20:25:24.823 に答える