Google Chrome拡張機能内から現在開いていないタブのWebスクレイピング JavaScriptおよびその他の利用可能な技術を使用して実行するための最良のオプションは何ですか。 他のJavaScriptライブラリも使用できます。
重要なことは、通常のWebリクエストのように動作するようにスクレイピングをマスクすることです。 X-Requested-With: XMLHttpRequest
やOrigin
など、AJAXまたはXMLHttpRequestの兆候はありません。
スクレイピングされたコンテンツは、拡張機能内でさらに操作および表示するためにJavaScriptからアクセスできる必要があります。ほとんどの場合、文字列として。
WebKit/Chrome固有のAPIには、通常のWeb要求を作成し、操作の結果を取得するために使用できるフックがありますか?
var pageContent = getPageContent(url); // TODO: Implement
var items = $(pageContent).find('.item');
// Display items with further selections
ディスク上のローカルファイルからこの作業を行うためのボーナスポイント、初期デバッグ用。しかし、それが唯一のポイントがソリューションの停止である場合は、ボーナスポイントを無視します。
XHR2responseType = "document"
を使用して、 my (new DOMParser).parseFromString(responseText, getResponseHeader("Content-Type"))
patch でtext/html
にフォールバックしようとします。 responseType = "document
サポートを検出する方法の例については、 https://Gist.github.com/1138724 を参照してください(から作成されたオブジェクトURLでresponse === null
を同期的にチェックするtext/html
blob)。
Chrome WebRequest API を使用して、X-Requested-With
などのヘッダーを非表示にします。
Google Chrome=プラグインを超えて何か見ているなら、バックグラウンドでQt-Webkitを使用し、Ajaxリクエストを含むブラウザーのように動作する phantomjs を見てください。画面に出力を表示せず、他の作業を行っている間はバックグラウンドで動作するため、ヘッドレスブラウザーと呼ぶことができます。必要に応じて、フェッチしたページから画像やPDFをエクスポートできます。ブラウザにあるのと同じようにページをロードしたり、ボタンをクリックしたりするためのJSインターフェイスを提供します。また、スクレイピングしたいページにjQueryなどのカスタムJSを挿入し、それを使用してdomにアクセスし、必要なデータをエクスポートすることもできます。 Webkit を使用しているため、レンダリング動作はGoogle Chromeとまったく同じです。
もう1つのオプションは、Aptana Jaxer を使用することです。これは、Mozilla Engineに基づいており、それ自体が非常に優れた概念です。単純なスクレイピングツールとしても使用できます。
この質問が尋ねられてから、多くのツールがリリースされました。
artoo.js はその1つです。これはJavaScriptコードの一部であり、ブラウザのコンソールで実行され、スクレイピングユーティリティを提供します。 chrome拡張機能としても使用できます。
Webスクレイピングは、Chrome拡張機能で複雑になります。いくつかのポイント:
JavaScriptだけで完全に可能かどうかはわかりませんが、cURLを使用してページのHTMLをフェッチする専用のPHPスクリプトを設定できる場合、PHPスクリプトはページをスクレイピングし、拡張機能はAJAXリクエストを介してページを読み込むことができます。
スクレイピングされている実際のページは、AJAXリクエストであることがわかりません。ただし、cURLを介してアクセスされているためです。
これから始めることができると思います 例 。
したがって、基本的には、Extension + Pluginの組み合わせを使用してみてください。拡張機能はDOM(プラグインを含む)にアクセスし、プロセスを駆動します。そして、プラグインは実際のHTTPリクエストを送信します。
FirebreathをクロスプラットフォームのChrome/Firefoxプラグインプラットフォームとして使用することをお勧めします。特に、この例をご覧ください: Firebreath-Making + HTTP + Requests + with + SimpleStreamsHelper
iframeのトリックを実行できませんでしたか? URLを専用フレームにロードすると、ドキュメントオブジェクトにdomがあり、jqueryを選択できますか?