web-dev-qa-db-ja.com

ウェブサイトからデータを抽出する方法は何ですか?

Webデータのスクレイピングを伴うサイドプロジェクトについて考えています。

さて、私は 安定した効率的な方法でWebページからデータを取得する 質問を読み、その議論からいくつかの洞察が得られました。

ディスカッションの中で、Joachim Sauerは、サイトの所有者や建築家に連絡して、必要なデータを提供できると述べました。私が目にする問題は、ウェブサイトは一般的にひどく作成されており、どうやらHTMLにほとんど変更がないことです(私はそれらが私に役立つとは思いません)が、データは関連しています。私はそれらのサイトを使用して多くの問題を抱えているので、より良い方法でそれらを集約して表示したいと思います。

それで、スクレイピング、具体的にはScrapy(Python用)を使用するのは問題のあるアプローチですか?私は parse.ly がスクレイピング(PythonとScrapy)を使用することを読みましたが、別のコンテキストです。

私のコンテキストを考えると、スクレイピングを行うよりも優れたアプローチがありますか?スクレイピングを行う場合、ウェブサイト構造の変更にどのように対処しますか?

4
salaniojr

Webサイトのコンテンツをダウンロードすると、Webサイトの所有者にさまざまな問題が発生する可能性があります。

  • 利用可能なすべてのリソースを使用してスクリプトリクエストにフィードすることにより、サーバーをボトルネックにします。
  • ミスをして、攻撃のように見えるリクエストを実行します。
  • URLは常に変化するため、robot trapと呼ばれるものにとらわれ、同じページをダウンロードし続けます。
  • robotos.txtファイルを無視して、所有者が望まないWebサイトの一部にアクセスすることもできます。

適切なWebクロールツールを使用することをお勧めします。ジョブに適切なツールを使用することで、Webサーバーのパフォーマンス、セキュリティ、および使用を尊重することができます。 Webサイトをスクレイピングするためのこれらの単純なPython/PHPスクリプトは、何千ものWebリクエストで制御されずに待ち伏せしているサーバーに害を及ぼすだけです。

Heritrix のようなWebクローラーを使用して、Webサイトをアーカイブファイルにダウンロードする必要があります。アーカイブファイルが作成されたら、Python/PHPを使用して必要なだけ処理できます。ハードドライブにローカルに保存されているため、何回読んでも害はありません。

別のウェブサイトのコンテンツを使用することの倫理と法的問題は、まったく別の問題です。私はそこに行くつもりはありません。なぜなら、それはあなたとウェブサイトの所有者との間にあるからです。私が見たくないのは、コンテンツをダウンロードしようとして不必要にWebサイトを叩いている人たちです。グーグル、ビング、ヤフーのような企業が従うのと同じルールで敬意を払い、ウェブをクロールします。

1
Reactgular