2011-12-06 14 views
3

私はNode.jsをかなり使い慣れているので、私が何を話しているのか分からなければ前もって謝ります。Node.js ASUコースを掻き立てる

私は、ASUのコースカタログ(https://webapp4.asu.edu/catalog/)からいくつかのコースを削り取り、Zombie、Node.IO、およびHTTPS APIを使用して多数の試行を行いました。どちらの場合も、私はリダイレクトループを実行しました。

ヘッダーを正しく設定していないためですか?

以下

が、私は(ないゾンビ/ Node.IO)を使用するもののサンプルコードです:

var https = require('https'); 

var option = { 
    host: 'webapp4.asu.edu', 
    path: '/catalog', 
    method: 'GET', 
    headers: { 
    'set-cookie': 'onlineCampusSelection=C' 
    } 
}; 

var req = https.request(options, function(res) { 
console.log("statusCode: ", res.statusCode); 
console.log("headers: ", res.headers); 
    res.on('data', function(d) { 
    process.stdout.write(d); 
    }); 
}); 

だけ明確にするために、私は一般的にNode.jsのでこすることでトラブルを抱えていませんよ。より具体的には、ASUのコースカタログが問題を引き起こしています。

ありがとうございました!

更新:Chrome/FFから取得したJSESSIONIDのCookieを作成すると、リクエストは正常に完了しました。 JSESSIONIDをリクエスト/作成する方法はありますか?

+0

ここでのNode.jsでWebページをこすりする方法についての記事全文です。 tutsplus.com/tutorials/javascript-ajax/how-to-scrape-web-pages-with-node-js-and-jquery/ – alessioalex

答えて

0

サーバーがJSESSIONID Cookieを設定してからリダイレクトするように見えるので、cookieを取得する場合は、node.jsにリダイレクトを行わないように指示する必要があります。 httpまたはhttpsパッケージでこれを行う方法はわかりませんが、npm:requestで入手できるもう1つのパッケージがあります。ここでは、始めるべきでサンプルがあります:

var request = require("request"); 

var options = { 
    url: "https://webapp4.asu.edu/catalog/", 
    followredirect: false, 
} 

request.get(options, function(error, response, body) { 
    console.log(response.headers['set-cookie']); 
}); 

出力は次のようになりますます。http://ネット

[ 'JSESSIONID=B43CC3BB09FFCDE07AE6B3B702717431.catalog1; Path=/catalog; Secure' ] 
+0

ありがとう!リダイレクトに続いて、私はループに詰め込まれました。 – btown

0

jsDOMjQuery(for node)と組み合わせて使用​​することを強くおすすめします。私はそれを非常に簡単にするので、scapingのために何度も何度も使ってきました。

jsdomのreadmeファイルからの相続例:助け

// Count all of the links from the nodejs build page 
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!"); 
}); 

ホープ、jsdomは、それが本当の簡単一緒にハック(少なくとも私にとっては)実験をこするようになりました。

関連する問題