如何通过带有循环功能的cheerio传递新选项

时间:2018-08-17 20:17:47

标签: javascript jquery

每次尝试完成后,我都会尝试使用新选项调用goforit()函数。 我只想修改实际页面的值并将其传递给baseuri。

您能帮忙吗?我像鱼一样转过身来

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

Get-ADUser -Filter { Description -like "*Example*"} -Properties Description | 
    ForEach-Object {
        $newDescription = $_.Description -replace "Example", "Example2"
        Set-ADUser -Identity $_.DistinguishedName -Description $newDescription
    }

2 个答案:

答案 0 :(得分:1)

我认为您正在使用最新的节点版本。

options = {...options, 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);
}

答案 1 :(得分:1)

您必须像这样在函数结束之前增加(actualpage)的值

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)
    });
    actualpage++;
    goforit()

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

因此,在调用函数时(realistpage)是递增的。

希望有帮助。