繁体   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