我正在尝试创建一个简单的nodejs客户端,最终将抓取给定的reddit用户配置文件历史记录。现在我正在尝试使用jsdom模块来提取给定用户配置文件的下一页结果的URL。
我目前正在使用ubuntu 12.10,我的npm和nodejs版本是最新的。
这是我到目前为止的代码。我将在下面添加错误消息。
var http = require('http'),
jsdom = require('jsdom');
//object containing http.request options
//path accepts a username via process.argv[2]
var options = {
host: 'www.reddit.com',
path: '/user/' + process.argv[2]
};
//getPage requests the page for a given user
function getPage() {
var req = http.request(options, function(response){
response.setEncoding('utf8');
response.on('data', function(rawHTML){
// console.log(data);
setNextPage(rawHTML);
});
response.on('error', function(error){
console.log(error);
});
response.on('end', function(){
console.log('Response complete');
});
});
req.end();
}
//the setNextPage function combs the rawHTML sent to it,
//extracting the URL for the next page of a users history
function setNextPage(rawHTML) {
jsdom.env(
rawHTML,
["http://code.jquery.com/jquery.js"],
function(errors, window) {
var nextPageURL = window.$(".nextprev > a").attr("href");
console.log('URL for the next page is: ' + nextPageURL);
}
);
}
getPage();
现在查看运行客户端后收到的错误消息。
/home/stephen/Desktop/getKarma/app.js:38
var nextPageURL = window.$('.nextprev > a').attr("href");
^
TypeError: Object #<Object> has no method '$'
at /home/stephen/Desktop/getKarma/app.js:38:29
at exports.env.exports.jsdom.env.scriptComplete (/home/stephen/Desktop/getKarma/node_modules/jsdom/lib/jsdom.js:205:39)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)