所以我试图用node.js x-ray scraping框架抓取一些内容.虽然我可以从单个页面获取内容,但我无法理解如何关注链接并一次从子页面获取内容.
x射线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); })
我希望我的蜘蛛抓住列出问题的页面,然后点击每个问题的链接并检索其他信息.
所以在一些帮助下我弄清楚问题是什么.我发布这个答案,以防其他人可能遇到同样的问题.
工作范例:
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); })