0

ノードとjqueryを使用したスクレイピングに関するこのチュートリアルに従おうとしています-

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-scrape-web-pages-with-node-js-and-jquery/

その中には、次のようなコードがあります -

request({uri:"http://events.sfgate.com/search?swhat=&swhen=&swhere=San+Francisco&commit=Search&st_select=any&search=true&svt=text&srss="},function(err,response,body){

jsdom.env({
html: "http://events.sfgate.com/search?swhat=&swhen=&swhere=San+Francisco&commit=Search&st_select=any&search=true&svt=text&srss=",
src:['http://code.jquery.com/jquery-1.6.min.js'],
done: function(errors,window){
    console.log("WINDOW");
    console.log(window.jQuery);
    var $ = window.$;
    //other stuff

window.Jquery または window.$ をコンソール ログに記録すると、どちらも未定義ですが、jsdom が jquery をページに埋め込む必要があるためではないでしょうか。なぜそれが起こらないのですか?

4

1 に答える 1

0

問題は、ファイルへのURLではなく、JavaScriptファイル(この場合はjquery)の実際のソースコードの配列を含む必要がある「src」パラメーターで初期化したことです。

URL が必要な場合は、次のように初期化する必要があります。

jsdom.env(
  "http://nodejs.org/dist/",
  ["http://code.jquery.com/jquery.js"],
  function (errors, window) {

またはこのように:

jsdom.env({
  html: "http://news.ycombinator.com/",
  scripts: ["http://code.jquery.com/jquery.js"],
  done: function (errors, window) {

編集:コードに別の間違いがあります(私が間違っていなければ...)-最初にリクエストモジュールを使用してページをダウンロードしますが、htmlソースをjsdomに渡す代わりに(リクエストbodyから取得したものを渡すことにより) ) jsdom にページを再度ダウンロードするように指示します。jsdom にページの URL を html として指定すると、リクエストモジュールを呼び出す必要はありません。

于 2013-01-24T13:54:45.920 に答える