【发布时间】:2014-11-05 01:10:56
【问题描述】:
所以,我正在用 jsdom 和 jquery 编写一个简单的页面抓取工具,但遇到了一个我不知道如何解决的问题。
这是一些有效的代码(更改了 URL):
var jsdom = require("jsdom");
var fs = require('fs');
var jquery = fs.readFileSync("./js/jquery-min.js").toString();
//There's two pages of product, here's page 1
jsdom.env({
url: 'http://exampleshoppingpage.com',
src: [ jquery ],
done: function(error, window){
var $ = window.$;
$('.productlist .product .title a').each(function() {
console.log($(this).text());
});
}
});
//And do the exact same thing for page 2
jsdom.env({
url: 'http://exampleshoppingpage.com?page=2',
src: [ jquery ],
done: function(error, window){
var $ = window.$;
$('.productlist .product .title a').each(function() {
console.log($(this).text());
});
}
});
但我真正想做的是获取所有这些产品并在打印出来之前对其进行分类。这是我尝试过的:
var jsdom = require("jsdom");
var fs = require('fs');
var jquery = fs.readFileSync("./js/jquery-min.js").toString();
var products = [];
//There's two pages of product, here's page 1
jsdom.env({
url: 'http://exampleshoppingpage.com',
src: [ jquery ],
done: function(error, window){
var $ = window.$;
products $('.productlist .product .title a').each(function() {
products.push($(this).text());
});
}
});
//And do the exact same thing for page 2
jsdom.env({
url: 'http://exampleshoppingpage.com?page=2',
src: [ jquery ],
done: function(error, window){
var $ = window.$;
$('.productlist .product .title a').each(function() {
products.push($(this).text());
});
}
});
products = products.sort();
console.log (products.join("\n"));
我得到一个空数组。我尝试了其他一些方法来确定我是否只是在做一些愚蠢的事情。我假设它与 jsdom 中的 jQuery 不与程序的外部共享范围有关?
【问题讨论】:
标签: javascript jquery node.js jsdom