Я пытаюсь выучить Axion & Cheerio, используя NodeJS для веб-скрейпинга ... У меня все было хорошо, пока я не наткнулся на проблему, пытаясь сохранить полученные данные в файл JSON. Я всегда боролся с массивами, объектами и форматированием JSON файлов ... Я был бы очень признателен, если бы кто-нибудь мог мне помочь и, возможно, связать некоторые полезные источники по этому вопросу.
Вот код который я сейчас использую:
if (response.status === 200) {
const html = response.data;
let $ = cheerio.load(html);
const data = {
animes: {
details: [],
episodes: []
}
};
$('.item').each(function (i) {
data.animes.details.push({
id: i - 3,
title: $(this).children('.inner').children('.name').text().trim(),
url: $(this).children('.inner').children('.name').prop('href'),
poster: $(this).children('.inner').children('.poster').children('img').prop('src')
});
data.animes.episodes.push({
episode: $(this).children('.inner').children('a').children('.status').children('.ep').text().trim()
});
});
data.animes.details = data.animes.details.slice(4, -21);
fs.writeFile('data/animes.json',
JSON.stringify(data, null, 4), (err) => {
console.log('File successfully written!');
});
}
В настоящее время мой JSON файл выглядит примерно так:
{
"weeb": {
"details": [
{
"id": 1,
"title": "Some title 1",
"url": "https://placeholder.com",
"poster": "https://lets-imagine-a-picture.com/picture01.jpg"
},
{
"id": 2,
"title": "Some title 2",
"url": "https://placeholder.com",
"poster": "https://lets-imagine-a-picture.com/picture01.jpg"
}
],
"episodes": [
{
"episode": "3/12"
},
{
"episode": "13/32"
}
]
}
}
Я хочу, чтобы мой JSON файл выглядел так:
{
"weeb": {
"details": [
{
"id": 1,
"title": "Some title 1",
"url": "https://placeholder.com",
"poster": "https://lets-imagine-a-picture.com/picture01.jpg",
"episodes": [
{
"episode-01": "https://some-nifty-link.com/episode01",
"episode-02": "https://some-nifty-link.com/episode02",
...
}
]
},
{
"id": 2,
"title": "Some title 2",
"url": "https://placeholder.com",
"poster": "https://lets-imagine-a-picture.com/picture01.jpg",
"episodes": [
{
"episode-01": "https://some-nifty-link.com/episode01",
"episode-02": "https://some-nifty-link.com/episode02",
...
}
]
}
]
}
}