无法在新功能中打印某些项目

时间:2019-04-08 07:29:38

标签: node.js web-scraping callback request cheerio

我已经在node中创建了一个脚本,使用requestcheerio从其着陆页中提取不同的titleslinks个不同的帖子,然后在另一个函数中传递这些titleslinks,以便我可以从其内页中提取这些title的{​​{1}}以及与用户创建该帖子的个人资料链接我已定义为links

  

如何使用回调从另一个函数中打印那些proLinktitleslinks

到目前为止,我已经写过:

proLink

再次:我希望使用回调在另一个函数中打印它们中的三个var request = require('request'); var cheerio = require('cheerio'); const url = 'https://stackoverflow.com/questions/tagged/web-scraping'; function getposts(callback){ request(url, function (error,response, html) { if (!error && response.statusCode == 200){ var $ = cheerio.load(html); $('.summary .question-hyperlink').each(function(){ var items = $(this).text(); var links = $(this).attr("href"); return callback(items,links); }); } }); } getposts((item,link,callback)=>{ request(link, function (error,response, html) { if (!error && response.statusCode == 200){ var $ = cheerio.load(html); var proLink = $('.user-details > a').eq(0).attr("href"); return callback(item,link,proLink); } }); }); itemlink

1 个答案:

答案 0 :(得分:0)

也许您可以尝试以下方法:

var request = require('request');
var cheerio = require('cheerio');

const url = 'https://stackoverflow.com/questions/tagged/web-scraping';

function getposts(callback) {
  request(url, function(error, response, html) {
    if (!error && response.statusCode == 200) {
      var $ = cheerio.load(html);
      $('.summary .question-hyperlink').each(function() {
        var items = $(this).text();
        var links = $(this).attr('href');
        return callback(items, links);
      });
    }
  });
}

function fetch(callback) {
  getposts((item, link) => {
    request(`https://stackoverflow.com${link}`, function(
      error,
      response,
      html
    ) {
      if (error) {
        console.log(link, error.message);
        return;
      }

      if (!error && response.statusCode == 200) {
        var $ = cheerio.load(html);
        var proLink = $('.user-details > a')
          .eq(0)
          .attr('href');
        return callback(item, link, proLink);
      }
    });
  });
}

fetch((item, link, proLink) => console.log({ item, link, proLink }));