我使用node-request进行http调用,使用jsdom遍历DOM。
我遇到的问题是,当通过Javascript加载页面内容时,请求和jsdom将无法获取已加载内容的页面。
以下是您可以尝试的示例:
var request = require('request'),
jsdom = require('jsdom');
request({ uri:'http://koesbong.com/clients/self/sandbox/nodejs-test/' }, function (error, response, body) {
if (error && response.statusCode !== 200) {
console.log('Error when contacting google.com')
}
jsdom.env({
html: body,
scripts: [
'http://code.jquery.com/jquery-1.7.1.min.js'
]
}, function (err, window) {
var $ = window.jQuery;
// jQuery is now loaded on the jsdom window created from 'agent.body'
console.log($('p').text());
});
});
如果您在浏览器中加载http://koesbong.com/clients/self/sandbox/nodejs-test/,您将在页面上看到“测试”,这是使用document.ready上的jquery附加的。但是在上面的脚本中,console.log不会显示任何内容。
如何让脚本获取页面内容?