node写的爬虫无法获得返回值。

问题描述

文科渣最近需要获取一个网站的广播链接,写了一个node的爬虫,所有链接的数组倒是可以打印,但是我不知道怎么能用一个变量获取这些链接的数组。

相关代码

var http = require('https');
var cheerio = require('cheerio')
var url = "https://www.tagesschau.de/export/podcast/tagesschau_https/";

function get(url) {
    return new Promise(function (resolve, reject) {
        http.get(url, function (res) {
            var html = '';
            res.on('data', function (data) {
                html += data;
            });
            res.on('end', function () {
                resolve(html);
            });
        }).on('error', function (e) {
            reject(e)
            console.log('获取数据错误');
        });
    })
}

function filterChapter(html) {
    var x = []
    const $ = cheerio.load(html);
    const chapters = $("enclosure");
    chapters.each(function (i, item) {
        x.push(item.attribs.url)
    })
    console.log(x)
}

get(url).then(function (data) {
    filterChapter(data)
})

filterChapter 里的这个x数组有什么办法可以获取?如果返回的话貌似就直接返回给了then后面的匿名函数了,还是无法获得。
还有个问题是 获取了所有enclosure标签,每个标签里有个url=“。。。。。”这样的信息,我想获取链接该怎么写?我上面写的虽然可以拿到链接,但是看着怪怪的,each后的参数有点搞不懂,多谢!

阅读 1.1k
1 个回答
filterChapter 里的这个x数组有什么办法可以获取?
function filterChapter(html) {
    ...
    return x ;
}

get(url).then(function (data) {
   var x = filterChapter(data) //x here
})
each后的参数有点搞不懂

chapters是解析后的类dom对象数组item就相当于查询到的其中一个标签的类dom对象,访问其属性集合(attribs)里面叫url的属性。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题