[英]Node.js Scraping ASU Course
我對Node.js很新,如果我不知道我在說什么,請提前道歉。
我正在嘗試從ASU的課程目錄(https://webapp4.asu.edu/catalog/)中刪除一些課程,並使用Zombie,Node.IO和HTTPS api進行了大量嘗試。 在這兩種情況下,我都遇到了重定向循環。
我想知道是不是因為我沒有正確設置標題?
下面是我使用的示例代碼(不是Zombie / 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?
我強烈建議將jsDOM與jQuery(用於節點)結合使用。 我已經多次使用它來進行scaping,因為它使它非常容易。
以下是jsdom自述文件中的例子:
// 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使得實際上很容易破解實驗(至少對我而言)。
看起來服務器設置JSESSIONID cookie然后重定向,所以如果你想獲取cookie,你需要告訴node.js不要遵循重定向。 我不知道如何使用http
或https
軟件包執行此操作,但是您可以通過npm: request
獲取另一個軟件包,它允許您執行此操作。 這是一個可以幫助您入門的示例:
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']);
});
輸出應該如下所示:
[ 'JSESSIONID=B43CC3BB09FFCDE07AE6B3B702717431.catalog1; Path=/catalog; Secure' ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.