我正在尝试获取从 officialcharts.com 抓取的数据的 youtube 视频。我能够抓取数据并为他们获取 youtube 网址。但是当我尝试将数据推送到数组中时,只会推送标题和艺术家姓名。变量 youtubeUrl 没有被赋值。为什么变量 youtubeUrl 不在范围内?
我尝试了多种方法。我尝试在搜索功能中声明 youtubeUrl,然后在请求之外,但我遇到了同样的问题。
我还尝试将 json.tracks.push 移动到搜索功能中,但是 json 不在范围内,因此没有任何内容添加到轨道中
我正在使用https://www.npmjs.org/package/youtube-search搜索视频。
// Scraping charts
app.get('/scrape', function(req, res){
url = 'http://www.officialcharts.com/music-charts/';
request(url, function(error, response, html){
if(!error){
var $ = cheerio.load(html);
var title, artist, youtubeUrl;
var json = {tracks:[]};
$('div .infoHolder').each(function(){
var data = $(this);
var opts = {
maxResults: 1,
startIndex: 1
};
// Scrapped title and artist name
title = data.children('h3').text();
artist = data.children('h4').text();
// Searching for youtube videos
search(title, opts, function (err, results) {
if (err) {
return console.log(err);
}
youtubeUrl = results[0].url;
})
console.log(youtubeUrl); // THIS IS RETURNED UNDEFINED
// youtubeUrl IS NOT PUSHED TO THE ARRAY
// ONLY TITLE AND ARTIST PUSHED
json.tracks.push({title:title,artist:artist,url: youtubeUrl});
})
}
res.send(json);
})
})