问题描述
文科渣最近需要获取一个网站的广播链接,写了一个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后的参数有点搞不懂,多谢!
chapters
是解析后的类dom对象数组
,item
就相当于查询到的其中一个标签的类dom对象
,访问其属性集合(attribs
)里面叫url
的属性。