javascript - 如何使用 Cheerio 和循环函数传递新选项

标签 javascript jquery

我尝试在每次函数完成时使用新选项来调用 goforit() 函数。 我只是想修改actualpage的值并将其传递给baseuri。

你能帮忙吗?我像鱼一样转身

实际上该函数返回相同的选项,但实际页面的值正在改变

const rp = require('request-promise');
const cheerio = require('cheerio');
var cookiejar = rp.jar();
var actualpage = 1;
var baseuri = 'https://www.website.page=' + actualpage;
var options = {
  uri: baseuri,
  headers: {
    'Host': 'www.website.com',
    'Connection': 'keep-alive'
  },
  jar: cookiejar,
  transform: function(body) {
    return cheerio.load(body);
  }
};

goforit()

function goforit() {
  actualpage = actualpage + 1
  baseuri = 'https://www.website.com' + actualpage;

  setTimeout(function() {
    rp(options)
      .then(($) => {
        var arr = 0
        arr = $('.bt__media__content p')

        var fruits = $('.bt__ment p');
        fruits.each(function(i, elem) {
          console.log(fruits[i].children[0].attribs)
        });
        goforit()

      })
      .catch((err) => {
        console.log(err);
      });

  }, 3000);
}

最佳答案

我假设您使用的是最新的节点版本。

选项 = {...选项,uri:baseuri}

可以使用扩展运算符更新选项。

添加这一行,

const rp = require('request-promise');
const cheerio = require('cheerio');
var cookiejar = rp.jar();
var actualpage = 1;
var baseuri = 'https://www.website.page=' + actualpage;
var options = {
  uri: baseuri,
  headers: {
    'Host': 'www.website.com',
    'Connection': 'keep-alive'
  },
  jar: cookiejar,
  transform: function(body) {
    return cheerio.load(body);
  }
};

goforit()

function goforit() {
  actualpage = actualpage + 1
  baseuri = 'https://www.website.com' + actualpage;
  // add this line 
  options = {...options, uri: baseuri}
  
  setTimeout(function() {
    rp(options)
      .then(($) => {
        var arr = 0
        arr = $('.bt__media__content p')

        var fruits = $('.bt__ment p');
        fruits.each(function(i, elem) {
          console.log(fruits[i].children[0].attribs)
        });
        goforit()

      })
      .catch((err) => {
        console.log(err);
      });

  }, 3000);
}

关于javascript - 如何使用 Cheerio 和循环函数传递新选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902341/

相关文章:

javascript - Css 动画 - 停止和恢复动画

javascript - Durandal 计算原型(prototype)方法

javascript - 如何删除 d3.js 图例中的白线?

javascript - 今天全日历开始日期

javascript - 如何创建动画实时排行榜?

javascript - 带有内联编辑的光滑网格选择框,在选择值后显示文本

javascript - Angular .js : How to bind "change" event to service

javascript - 设置所有单选按钮的名称

javascript - jQuery 过滤器不返回数据元素,只返回整个对象

javascript - Jquery 和 CSS 动画在 ANDROID Webview 应用程序中不起作用