簡體   English   中英

Node.js刮刮ASU課程

[英]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?

我強烈建議將jsDOMjQuery(用於節點)結合使用。 我已經多次使用它來進行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不要遵循重定向。 我不知道如何使用httphttps軟件包執行此操作,但是您可以通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM