2

少し範囲を広げるために、cloudfoundry で実行しているスクレイピング アプリがあります。ここで説明した Contextify の問題により、jsdomを使用してこれを行うことができません。

この問題を回避するために、私は jsdom をCheerioに置き換え始めましたが、スクレイピングされたデータを処理するために使用する必要がある Sizzle セレクターを完全にはサポートしていないことに気付きました。

少し調査した後、レンガの壁にぶつかったと思い始めています。この問題を回避する別の方法はありますか?

ありがとう!

4

1 に答える 1

1

これで遅れてすみません。Cloudfoundry に JSDOM を正常にインストールできるようになりましたが、一部の機能が利用できないようです。たとえば、jQuery を使用するためのブラウザ ウィンドウを作成することはできません。ただし、jsdom ドキュメントを作成することはできます。

次の例を考えます。

  var http = require('http');
  var util = require('util');
  var jsdom = require("jsdom");

  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});

    res.write("JSDom object;");
    createDocAndQuery(res);

    res.write("\nNumber of node.js releases = ");
    getLinkCount(res);

  }).listen(3000);

  function createDocAndQuery(response) {
    var doc = jsdom.jsdom("<html><body></body></html>", jsdom.level(1, "core"));
    response.write(util.inspect(doc));
  }

  function getLinkCount(response) {
    jsdom.env(
      "http://nodejs.org/dist/",
      ["http://code.jquery.com/jquery.js"],
      function (errors, window) {
        response.end ("" + window.$("a").length)
      }
    );
  }

この最初の部分は CloudFoundry.com で機能しますが、2 番目の部分はウィンドウ オブジェクトの作成時に失敗します。

于 2012-10-23T09:01:53.957 に答える