Я работаю над веб-сервером Node, реализованным с помощью Puppeteer и Cheerio.
У меня есть приложение React, использующее Soundcloud-widget для воспроизведения музыки, но дело в том, что API работает только с правильнымSoundcloud URL.
Итак, я делаю ввод с пользовательского интерфейса, чтобы отправить запрос на поиск SoundCloud через Scraper и получить оттуда результаты.
Поскольку все, что меня волнует, это URL иназвание песни, полученное из записки
$(a.soundTitle__title)
, которая содержит имя в дочернем теге span (в его атрибуте "class") и URL-адрес как href, этого достаточно.
Проблема в том, что я получаю
{
options: {
withDomLvl1: true,
normalizeWhitespace: false,
xml: false,
decodeEntities: true
},
length: 0,
prevObject: {
options: {
withDomLvl1: true,
normalizeWhitespace: false,
xml: false,
decodeEntities: true
}
}
}
, который является выводом cheerio по умолчанию для имени диапазона / песни и "undefined" для URL-адреса href.
, даже когда я пытаюсь использовать {.text () / .attr ("class") / etc ...}, resp - undefind / этот текст ответа / ошибки по умолчанию () не является функцией
это мой код -
... req
const addaptReq = req.text.replace(' ', '%20');
const url = `https://soundcloud.com/search?q=${addaptReq}`;
let myBrowser;
puppeteer
.launch()
.then(browser => {
myBrowser = browser;
return myBrowser.newPage();
})
.then(page => {
return page.goto(url).then(() => {
return page.content();
});
})
.then(html => {
// console.log(html)
$('a.soundTitle__title', html, ).each(result => {
let songName = $('span', result)
let songURL = $(result).attr('href')
// hopefuly name will give the span text (which is it class and href the URL)
console.log(songName, songURL)
})
}).then(() => {
myBrowser.close()
})
.catch(err => {
console.log(err);
});
Я прилагаю скриншот soundcloudс devtools, может я что-то там не так делаю?
спасибо заранее!
![soundcloud screenshot](https://i.stack.imgur.com/Lh1md.png)