所以我试图用node.js x-ray scraping框架来抓取一些内容。虽然我可以从单个页面获取内容,但我无法理解如何关注链接并一次性从子页面获取内容。
x-ray github配置文件中有一个示例,但如果我将代码更改为其他网站,则会返回空数据。
我简化了我的代码并使其抓取了此示例的SO问题。
以下工作正常:
var Xray = require('x-ray');
var x = Xray();
x('http://stackoverflow.com/questions/9202531/minimizing-nexpectation-for-a-custom-distribution-in-mathematica', '#content', [{
title: '#question-header h1',
question: '.question .post-text'
}])
(function(err, obj) {
console.log(err);
console.log(obj);
})
这也有效:
var Xray = require('x-ray');
var x = Xray();
x('http://stackoverflow.com/questions', '#questions .question-summary .summary', [{
title: 'h3',
question: x('h3 a@href', '#content .question .post-text'),
}])
(function(err, obj) {
console.log(err);
console.log(obj);
})
但这给了我空的细节结果,我无法弄清楚出了什么问题:
var Xray = require('x-ray');
var x = Xray();
x('http://stackoverflow.com/questions', '#questions .question-summary .summary', [{
title: 'h3',
link: 'h3 a@href',
details: x('h3 a@href', '#content', [{
title: 'h1',
question: '.question .post-text',
}])
}])
(function(err, obj) {
console.log(err);
console.log(obj);
})
我希望我的蜘蛛抓住列出问题的页面,然后点击每个问题的链接并检索其他信息。
答案 0 :(得分:6)
所以在一些帮助下我弄清楚问题是什么。我发布这个答案,以防其他人可能遇到同样的问题。
工作示例:
var Xray = require('x-ray');
var x = Xray();
x('http://stackoverflow.com/questions', '#questions .question-summary .summary', [{
title: 'h3',
link: 'h3 a@href',
details: x('h3 a@href', {
title: 'h1',
question: '.question .post-text',
})
}])
(function(err, obj) {
console.log(err);
console.log(obj);
})
答案 1 :(得分:1)
版本2.0.2确实有效.. github目前存在一个问题,请关注以下内容://github.com/lapwinglabs/x-ray/issues/189