2012-03-08 14 views
4

Firebug経由でWebページのヘッダーにjQuery JavaScriptのリンクを張ることができます。それから私はそれを掻き集めるためのスクリプトとそれがリンクしているページを実行することができます。jQueryとXPathでWebページをスクラップする方法はありますか?

このスクリプトをjQueryまたは一般的なJavaScriptで作成するにはどうすればよいですか?いずれかのjQuery/Javascriptに、ページ上の要素(およびリンク先のページ)にアクセスするためのXPathを使用できるインタフェースがありますか?

答えて

3

あなたはすぐにページのHTMLを取得することができます:これはリテラル文字列を返しますし、それがルート要素をキャプチャしません

var html = document.documentElement.innerHTML; 

+0

ありがとうございました。リンクしているページを自動的に削り取る方法を知っていますか? – dangerChihuahua007

5

まず、ブラウザの外にJavaScriptランタイムが必要です。最も一般的なのはNode.jsです。次に、DOMクライアント側を作成する方法が必要になります。これは通常jsdomを使用して行われます。

だから、あなたのスクリプトはすべき:

  1. jQueryの
  2. を使用して、クライアント側のDOM
  3. パースを作成
  4. jsdomがあなたのためにこれを行いますが、あなたはrequestを使用することができます)htmlページをダウンロード

サンプルNode.jsスクリプトを次に示します。

var jsdom = require("jsdom"); 

jsdom.env("http://nodejs.org/dist/", [ 
    'http://code.jquery.com/jquery-1.5.min.js' 
    ], function(errors, window) { 
    console.log("there have been", window.$("a").length, "nodejs releases!"); 
}); 

ので、同様にあなたは、それを実行します:

$ node scrape.js 

が最初jsdomをインストールすることを忘れないでください:

$ npm install --production jsdom 
3

あなたは、まさにこのために構築されたWeb-こするライブラリに興味があるかもしれません目的(免責事項:これは私のプロジェクトです)。これは、コマンドラインから実行できるヘッドレスWebkitの実装であるPhantomJSに基づいており、複数のページからデータをスクラップし、スパイダーとスクレイプへの追加のURLを見つけるための非常に単純な構文を持っています。

+0

ありがとうございます。あなたのプロジェクトは興味深いと思う。私がjQueryとJavascriptを使用しているのは、私がスクラップしようとしているページがログイン保護されているからです。これがうまくいくと思いますか? – dangerChihuahua007

+0

これにはPhantomJSを使うことはできますが、まだpjscrapeで行うことはできません。ログイン設定によって異なります。もう1つの選択肢は、実際に開いているブラウザで動作するSeleniumを使用することです。これにより、非常に複雑なログイン操作を処理できます。 – nrabinowitz

関連する問題