在每个循环中调用 cheerio.load
Calling cheerio.load inside each loop
所以 Meteor 中的基本服务器 JS scraper。
图案有点简单。脚本找到某些链接,然后从中加载内容并将内容存储在变量中。
在循环中加载 cheerio 时,脚本不断崩溃。
问题在哪里?为此目的的最佳实施方式是什么?
Meteor.methods({
loadPage: function () {
result = Meteor.http.get("http://url.com");
$ = cheerio.load(result.content);
$('.class').each(function(i,elem){
var link = $(this).attr('href');
var title = $(this).text();
var $ = cheerio.load(Meteor.http.get(link).content);
var postContent = $('.classOnLoadedPage');
Images.insert(
{
link: link,
title: title,
postContent: postContent
});
});
}
});
我今天遇到了完全相同的问题。事实证明这是 cheerio 本身的问题。它的相当旧的版本有这个错误。您必须使用较新的版本,然后才能正常工作。
atmospherejs 中下载次数最多的 cheerio 包 mrt:cheerio
包含 cheerio 0.12.3
,而 npm 中的当前版本是 cheerio 0.19.0
添加 rclai89:cheerio
而不是 mrt:cheerio
,它将交付 cheerio 0.18.0
,并且此版本在循环内加载完美。
所以 Meteor 中的基本服务器 JS scraper。
图案有点简单。脚本找到某些链接,然后从中加载内容并将内容存储在变量中。
在循环中加载 cheerio 时,脚本不断崩溃。 问题在哪里?为此目的的最佳实施方式是什么?
Meteor.methods({
loadPage: function () {
result = Meteor.http.get("http://url.com");
$ = cheerio.load(result.content);
$('.class').each(function(i,elem){
var link = $(this).attr('href');
var title = $(this).text();
var $ = cheerio.load(Meteor.http.get(link).content);
var postContent = $('.classOnLoadedPage');
Images.insert(
{
link: link,
title: title,
postContent: postContent
});
});
}
});
我今天遇到了完全相同的问题。事实证明这是 cheerio 本身的问题。它的相当旧的版本有这个错误。您必须使用较新的版本,然后才能正常工作。
atmospherejs 中下载次数最多的 cheerio 包 mrt:cheerio
包含 cheerio 0.12.3
,而 npm 中的当前版本是 cheerio 0.19.0
添加 rclai89:cheerio
而不是 mrt:cheerio
,它将交付 cheerio 0.18.0
,并且此版本在循环内加载完美。