質問

これらのプログラムを書いている人はいつも聞いているし、彼らが何をしているのか知っているが、実際にはどうやってそれをしているのか?一般的な概念を探しています。

役に立ちましたか?

解決

技術的に、スクリーンスクレイピングとは、別のプログラムの表示データを取得し、それを自分で使用するために取り込むプログラムです。

かなり頻繁に、スクリーンキャプチャとは、対象のWebサイトのHTMLページを解析して、フォーマットされたデータを抽出するWebクライアントを指します。これは、WebサイトがプログラムでデータにアクセスするためのRSSフィードまたはREST APIを提供していない場合に行われます。

この目的で使用されるライブラリの例の1つは、Rubyの Hpricot です。 -画面スクレイピングに使用されるアーキテクチャ化されたHTMLパーサー。

他のヒント

多くの正確な回答がここにあります。

誰も言わなかったことは、やってはいけない

画面スクレイピングは、誰も合理的な機械可読インターフェースを提供していないときに行うことです。書くのは難しく、もろい。

例として、RSSアグリゲーターを検討してから、通常の人間向けのブログインターフェイスを介して同じ情報を取得するコードを検討します。ブロガーがレイアウトを変更することに決めたときに、どれが壊れますか?

もちろん、選択の余地がない場合もあります:(

一般に、スクリーンスクレーパーは、ブラウザまたはターミナルアクセスプログラムを使用してワークステーションの前に座っている人の動作を模倣することにより、サーバープログラムからの出力をキャプチャするプログラムです。特定のキーポイントで、プログラムは出力を解釈し、アクションを実行するか、出力から特定の量の情報を抽出します。

元々、これは、メインフレームからの文字/端末出力を使用して行われ、データを抽出したり、エンドユーザーが直接アクセスできないシステムを更新したりします。現代の用語では、通常、HTTPリクエストからの出力を解析してデータを抽出するか、他のアクションを実行することを意味します。 Webサービスの出現により、この種のものは消滅するはずでしたが、すべてのアプリが相互作用する素晴らしいAPIを提供するわけではありません。

スクリーンスクレーパーはhtmlページをダウンロードし、既知のトークンを検索するか、XMLなどとして解析することにより、関心のあるデータを引き出します。

PCの初期の頃、スクリーンスクレーパーは端末(例:IBM 3270)をエミュレートし、メインフレームの情報を対話的に抽出、更新するためにユーザーになりすました。最近では、この概念はWebページを介してインターフェイスを提供するすべてのアプリケーションに適用されます。

SOAの登場により、スクリーンスクレイピングは、そうではないアプリケーションをサービスに提供する便利な方法です。これらの場合、ウェブページのスクレイピングがより一般的なアプローチです。

Javascript でjQueryを使用して実装された小さな画面スクレイピングを次に示します(スクレイピングは通常クライアントサーバーアクティビティであるため、一般的な選択肢ではありません):

//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パス規則を変更すると、すべての賭けは無効になり、機能しなくなる可能性があります。これは、当事者間で契約/理解がないスクレイピング作業の通常のリスクです(スクレーパー)スクレイピー[はい、単語を発明した])。

技術的に、スクリーンスクレイピングとは、別のプログラムの表示データを取得し、それを自分で使用するために取り込むプログラムのことです。メインフレームの情報をインタラクティブに抽出、更新するため。最近では、この概念はWebページを介してインターフェイスを提供するすべてのアプリケーションに適用されます。

SOAの登場により、スクリーンスクレイピングは、そうではないアプリケーションをサービスに提供する便利な方法です。これらの場合、ウェブページのスクレイピングがより一般的なアプローチです。

かなり頻繁に、スクリーンキャプチャとは、対象のWebサイトのHTMLページを解析して、フォーマットされたデータを抽出するWebクライアントを指します。これは、WebサイトがプログラムでデータにアクセスするためのRSSフィードまたはREST APIを提供していない場合に行われます。

通常、必要なデータを含むHTMLページがあります。あなたがすることは、そのウェブページを取得し、そのデータを抽出しようとするプログラムを書くことです。これはXMLパーサーを使用して行うことができますが、単純なアプリケーションの場合は、正規表現を使用してHTMLの特定の場所に一致させ、必要なデータを抽出することを好みます。ただし、周囲のHTMLがドキュメント内に複数回出現するため、適切な正規表現を作成するのが難しい場合があります。必要なデータにできる限り近い一意のアイテムを常に一致させる必要があります。

画面スクレイピングは、誰も合理的な機械可読インターフェースを提供していないときに行うことです。書くのは難しく、もろい。

例として、RSSアグリゲーターを検討してから、通常の人間向けのブログインターフェイスを介して同じ情報を取得するコードを検討します。ブロガーがレイアウトの変更を決定したときに、どちらが壊れるか。

この目的で使用されるライブラリの一例は、Hpricot for Rubyです。これは、画面スクレイピングに使用される、より優れたアーキテクチャのHTMLパーサーの1つです。

必要なデータを含むHTMLページがあります。あなたがすることは、そのウェブページを取得し、そのデータを抽出しようとするプログラムを書くことです。これはXMLパーサーを使用して実行できますが、単純なアプリケーションの場合は、正規表現を使用してHTMLの特定の場所に一致させ、必要なデータを抽出することを好みます。ただし、周囲のHTMLがドキュメント内に複数回出現するため、適切な正規表現を作成するのが難しい場合があります。必要なデータにできる限り近い一意のアイテムを常に一致させる必要があります。

  

画面スクレイピングは、誰も合理的な機械可読インターフェースを提供していないときに行うことです。書くのは難しく、もろい。

まったくそうではありません。ほとんどの開発者はまともなAPIを書くのに十分な経験がないと言っても、私は誇張しているとは思わない。私はスクリーンスクレイピング会社と仕事をしてきましたが、多くの場合、APIは非常に問題が多く(不可解なエラーから悪い結果に至るまで)、多くの場合、Webサイトが提供する完全な機能を提供しません意志)。エクストラネット/ウェブサイトポータルは、APIクライアントよりも多くの顧客/ブローカーに使用されているため、より適切にサポートされています。大企業では、エクストラネットポータルなどへの変更はめったにありません。通常、元々はアウトソースされていて、現在はメンテナンスされているだけです。出力を調整するスクリーンスクレイピングについて詳しく説明します。特定のルートと時間のフライト、保険見積、出荷見積など。

それを行うという点では、ページコンテンツを文字列にプルし、一連の正規表現を使用して必要な情報を抽出するのは、Webクライアントと同じくらい簡単です。

string pageContents = new WebClient("www.stackoverflow.com").DownloadString();
int numberOfPosts = // regex match

明らかに大規模な環境では、上記よりも堅牢なコードを書くことになります。

  

スクリーンスクレーパーはhtmlをダウンロードします   ページ、およびデータを引き出します   次のいずれかを検索して興味を持っています   既知のトークンまたはXMLとして解析するか、   そのようなもの。

これは正規表現よりもクリーンなアプローチです...理論上..ただし、実際にはそれほど簡単ではありません。ほとんどのドキュメントは、XPathを使用する前にXHTMLに正規化する必要があるため、最終的に微調整が行われました。正規表現はより実用的でした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top