人々がこれらのプログラムを書いているのをいつも聞いており、彼らが何をしているのかは知っていますが、実際にはどのようにそれを行っているのでしょうか? 私は一般的な概念を探しています。
9 に答える
技術的には、スクリーンスクレイピングとは、別のプログラムの表示データを取得し、それを独自に使用するために取り込むプログラムです。
多くの場合、スクリーンスケーピングは、対象の Web サイトの HTML ページを解析してフォーマットされたデータを抽出する Web クライアントを指します。これは、Web サイトが RSS フィードやプログラムによるデータ アクセス用の REST API を提供していない場合に行われます。
この目的で使用されるライブラリの一例は、 Ruby 用のHpricotです。これは、スクリーン スクレイピングに使用される、より優れたアーキテクチャの HTML パーサーの 1 つです。
ここにはたくさんの正確な答えがあります。
誰も言ってないことは、それをしないでください !
スクリーン スクレイピングとは、機械で読み取り可能な適切なインターフェイスが提供されていない場合に行うことです。書きにくいし、もろい。
例として、RSS アグリゲーターを考えてみましょう。次に、通常の人間指向のブログ インターフェイスを介して作業することで同じ情報を取得するコードを考えてみましょう。ブロガーがレイアウトを変更しようとすると、どちらが壊れますか?
もちろん、選択の余地がない場合もあります:(
一般に、スクリーン スクレイパーは、ブラウザーまたはターミナル アクセス プログラムを使用してワークステーションの前に座っている人の動作を模倣することにより、サーバー プログラムからの出力をキャプチャするプログラムです。特定の重要なポイントで、プログラムは出力を解釈し、アクションを実行するか、出力から特定の量の情報を抽出します。
元々、これはメインフレームからの文字/端末出力を使用して、データを抽出したり、エンド ユーザーが直接アクセスできない旧式のシステムを更新したりして行われていました。現代の用語では、通常、HTTP 要求からの出力を解析してデータを抽出するか、その他のアクションを実行することを意味します。Web サービスの出現により、この種のことはなくなったはずですが、すべてのアプリが対話するための優れた API を提供しているわけではありません。
技術的には、スクリーンスクレイピングとは、別のプログラムの表示データを取得し、それを自分で使用するために取り込むプログラムのことです。PCの初期の頃、スクリーンスクレイピングは端末(IBM 3270など)をエミュレートし、インタラクティブにユーザーのふりをしていました。メインフレームの情報を抽出、更新します。最近では、この概念はWebページを介してインターフェイスを提供するすべてのアプリケーションに適用されます。
SOAの出現により、スクリーンスクレイピングは、サービスがそうでないアプリケーションを有効にする便利な方法です。そのような場合、Webページのスクレイピングがより一般的なアプローチです。
多くの場合、スクリーンスケープとは、対象のWebサイトのHTMLページを解析してフォーマットされたデータを抽出するWebクライアントを指します。これは、Webサイトがプログラム的な方法でデータにアクセスするためのRSSフィードまたはRESTAPIを提供していない場合に行われます。
通常、必要なデータを含むHTMLページがあります。あなたがしていることは、そのWebページをフェッチし、そのデータを抽出しようとするプログラムを作成することです。これはXMLパーサーを使用して実行できますが、単純なアプリケーションでは、正規表現を使用してHTMLの特定の場所に一致させ、必要なデータを抽出することを好みます。ただし、周囲のHTMLがドキュメント内に複数回表示されるため、適切な正規表現を作成するのが難しい場合があります。常に、必要なデータにできるだけ近い一意のアイテムを一致させる必要があります。
スクリーンスクレイピングは、誰もあなたに合理的な機械可読インターフェースを提供していないときに行うことです。書くのは難しく、もろい。
例として、RSSアグリゲーターを考えてから、通常の人間向けのブログインターフェイスを介して作業することで同じ情報を取得するコードを考えてみましょう。ブロガーがレイアウトを変更することを決定したときにどちらが壊れますか。
この目的で使用されるライブラリの1つの例は、Hpricot for Rubyです。これは、画面スクレイピングに使用される、より適切に設計されたHTMLパーサーの1つです。
これは、jQuery を使用してJavascriptで実装された小さなスクリーン スクレイピングです (通常、スクレイピングはクライアント サーバー アクティビティであるため、一般的な選択ではありません)。
//Show My SO Reputation Score
var repval = $('span.reputation-score:first'); alert('StackOverflow User "' + repval.prev().attr('href').split('/').pop() + '" has (' + repval.html() + ') Reputation Points.');
Firebugを実行する場合は、上記のコードをコピーしてコンソールに貼り付け、この質問ページで動作を確認してください。
SO が DOM 構造 / 要素クラス名 / URI パスの規則を変更した場合、すべての賭けが無効になり、もはや機能しなくなる可能性があります。これは、当事者 (スクレイパーとスクレイピー) の間で契約/理解がない場合のスクリーン スクレイピングの試みにおける通常のリスクです。 [はい、単語を発明したところです])。
スクリーン スクレーパーは html ページをダウンロードし、既知のトークンを検索するか、XML などとして解析することにより、関心のあるデータを引き出します。
必要なデータを含む HTML ページがあります。あなたがすることは、その Web ページを取得してそのデータを抽出しようとするプログラムを作成することです。これは XML パーサーで行うことができますが、単純なアプリケーションの場合は、正規表現を使用して HTML 内の特定の場所を照合し、必要なデータを抽出することを好みます。ただし、周囲の HTML がドキュメント内に複数回出現するため、適切な正規表現を作成するのが難しい場合があります。必要なデータにできるだけ近い一意のアイテムを常に一致させたいと考えています。
PC の初期の頃、スクリーン スクレーパーは端末 (IBM 3270 など) をエミュレートし、メインフレームの情報を対話的に抽出して更新するために、ユーザーのふりをしていました。最近では、この概念は、Web ページを介してインターフェースを提供するすべてのアプリケーションに適用されています。
SOA の出現により、スクリーンスクレイピングは、サービスが有効でないアプリケーションを有効にするための便利な方法です。そのような場合、Web ページのスクレイピングがより一般的なアプローチになります。
スクリーン スクレイピングとは、機械で読み取り可能な適切なインターフェイスが提供されていない場合に行うことです。書きにくいし、もろい。
正確ではありません。ほとんどの開発者はまともな API を書くのに十分な経験を持っていないと言っても過言ではないと思います。私はスクリーンスクレイピング会社と協力してきましたが、多くの場合、API は非常に問題があり (不可解なエラーから悪い結果に至るまで)、Web サイトが提供する完全な機能を提供しないことが多いため、スクリーンスクレイピングを行う方が良い場合があります (Web スクレイピングを使用する場合)。意思)。エクストラネット/ウェブサイト ポータルは、API クライアントよりも多くの顧客/ブローカーに使用されているため、より適切にサポートされています。大企業では、エクストラネット ポータルなどへの変更はほとんどありません。これは通常、当初はアウトソーシングされ、現在は維持されているためです。特定のルートと時間のフライト、保険の見積もり、配送の見積もりなど、出力が調整されるスクリーン スクレイピングについて詳しく説明します。
それを行うという点では、Web クライアントがページのコンテンツを文字列にプルし、一連の正規表現を使用して必要な情報を抽出するのと同じくらい簡単です。
string pageContents = new WebClient("www.stackoverflow.com").DownloadString();
int numberOfPosts = // regex match
明らかに、大規模な環境では、上記よりも堅牢なコードを作成することになります。
スクリーン スクレーパーは html ページをダウンロードし、既知のトークンを検索するか、XML などとして解析することにより、関心のあるデータを引き出します。
それは正規表現よりもクリーンなアプローチです...理論的には..しかし、実際にはそれほど簡単ではありません.XPathを通過する前にほとんどのドキュメントをXHTMLに正規化する必要があるため、最終的に微調整された正規表現がより実用的です。