2009-04-05 15 views
1

ブックマークレットボタンを作成しています。ユーザーがブラウザでこのボタンをクリックすると、現在のページを削り取り、このページから価格、アイテム名、アイテムイメージなどの値を取得します。ウェブサイト、クライアント側またはサーバー側をかすめる方法は?

これらのフィールドは可変です。つまり、これらの値を取得するロジックがドメイン「amazon、ebay」ごとに異なることを意味します。

私の質問は以下のとおりです。

  • は私がサーバーに送信、その後、これらのデータをこすりするためにJavaScriptを使用する必要がありますか?
  • URLをサーバー側に送信し、.netコードを使用して値をスクラップしますか?
  • どのような方法が最適ですか?なぜそれが良いのでしょうか?利点、欠点?

このビデオを見て、あなたは、たとえばASP.NETで書かれたあなたサイト(での使用のために別のサイトから情報を引き出したい場合は、私は正確にhttp://www.vimeo.com/1626505

+0

Amr - 私の答えを選んでいただきありがとうございます。 –

答えて

2

を何をしたいのかを理解します)あなたは通常、結果を処理するための豊富な言語(例えばC#)を持つように、サーバー側でこれを行います。これは、.NETのWebRequestオブジェクトを介して行います。

クライアントサイド処理の主な用途は、Javascriptを使用してサイトに表示する情報を取得することです。たとえばWeather Channelが提供するスクリプトを使用して、サイトに小さな天気のボックスを表示したり、お気に入りにページを追加するなどの非常に簡単な操作を行うことができます。

UPDATE:Amrは、いくつかの非常に洗練された処理を必要とする人気のあるスクリーンスクレイピングソフトウェアの機能を再現しようとしていると書いています。 Amr、IEのブラウザオブジェクトを使用してWebページを表示するアプリケーションを作成することを検討します。これは非常に簡単です。あなたはInnerHTML(IE-object-basedプログラムを実装してから数年経ちました)を取得して、ページの内容を取得し、あなたの魔法を実行することができます。もちろん、WebRequestオブジェクトを使用することもできます(ブラウザオブジェクトで使用されているURLを渡すだけです)が、それはページを2回目にダウンロードするほど効率的ではありません。

これはあなたの後ですか?

+0

私はフィッシングではないと思っています。http://en.wikipedia.org/wiki/Web-scraping_software_comparison –

+0

これはブックマークレットですが、これは簡単にできます。間違った手で危険なことがあります。しかし、偉大なブックマークレットアプリのMagnoliaをチェックしてください。 –

+0

ありがとうございました。私はbookmarkletsやマグノリアに精通していない。確かめます。 –

0

静的な言語よりも静的な言語が好きで、バックエンドのロジックを維持する方がより快適になるため、私は(私はJavaの人です)私はサーバ側でそれを掻き集めます。反対側では、どれくらいの数のアイテムを掻きたいのか、これがどのくらい複雑であるかによって決まります。おそらく値がJavaScriptの単一のidセレクターで解析可能な場合、サーバー側の処理が過度に機能する可能性があります。

0

ブックマークレットは定義ごとにクライアント側ですが、クライアントをサーバーに依存させることもできますが、例では十分な情報が得られません。スクレイプされた情報で何をしたいですか?

1

これを行うにはJavaScriptのみを使用する場合は、使用するすべてのサイトの正確なレイアウトがわかっていないと、かなり大きなブックマークレットが必要になります。

私がこれをやっているのは、あなたのブックマークレット(JavaScriptを使用している)が表示しているページのURLのようないくつかのパラメータにリダイレクトされるというWebサービスを自分のサーバーで使用することです。あなたのサーバーはそのページを掻き集めて、あなたが興味を持っているもののHTMLを解析する作業を行います。

良い例は、訪問しているページのURLをそのサーバーに渡す"Import to Mendeley"ブックマークレットですそのページに掲載されている論文の情報を抽出してコレクションにインポートします。

0

ブックマークレットにスクレイピングコードを含めると、新しい機能やバグ修正が含まれている場合、ユーザーはブックマークを更新する必要があります。サーバー側ですべてのユーザーがすぐに新しいものを入手してください:)

関連する問題