node.js - 在每个循环内调用cheerio.load

标签 node.js meteor web-scraping cheerio

因此,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,并且使用此版本可以在循环内加载完美。

关于node.js - 在每个循环内调用cheerio.load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242031/

相关文章:

Meteor:你究竟是如何安装 phantomJS 的?

python - Scrapy 获取错误为 "DNS lookup failed"的网站

python - 在Python中按日期从http下载多个XLS文件

javascript - 在 Node.JS 中排序数据

android - 针对 Android 错误的 Meteor 地理定位包

javascript - 帮助 MongoDB 和唯一 ID 生成

javascript - 如何在 MongoDB 中的数组元素的开头和结尾的字段中查找两个子字符串?

python - python 列表中的值被替换

node.js - 使用 Express Gateway 的证书验证错误

javascript - 如何在 TypeScript 中使用 mocha 模拟 axios 依赖?