Re: Тема для розмов
дізнався про cheerio, тепер хочу побудувати json файл з інфою про всі повідомлення на цьому сайтику.
А потім подивимось, як моя відсутність впливає на активність форуму
осьо назви категорій можу вже отримати
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Інше → Тема для розмов
Сторінки Попередня 1 … 396 397 398 399 400 … 723 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
дізнався про cheerio, тепер хочу побудувати json файл з інфою про всі повідомлення на цьому сайтику.
А потім подивимось, як моя відсутність впливає на активність форуму
осьо назви категорій можу вже отримати
дізнався про cheerio, тепер хочу побудувати json файл з інфою про всі повідомлення на цьому сайтику.
А потім подивимось, як моя відсутність впливає на активність форуму
осьо назви категорій можу вже отримати▼Прихований текст
А я пам'ятаю, як ви починали знайомитись з пайтоном і теж писали тут що перше, що написали на пітоні - парсер назв категорій на replace. Я тоді ще офігів, ну як так, я теж вже ось 2 місяці Лутца читаю і нічого такого в пайтоні не бачив, і вирішив що вивчу пайтон і теж так зможу
а я такого не пам'ятаю щось
пам'ятаю тільки, як шум Перліна малював на Пайтоні
ну ось напишете цей парсер то може і побачите в усіх повідомленнях своє
думаю, якого дідька вилазить помилка, і вона null?
а от чому
body: '<html>\r\n<head><title>502 Bad Gateway</title></head>\r\n<body bgcolor="white">\r\n<center><h1>502 Bad Gateway</h1></center>\r\n<hr><center>nginx/1.6.2</center>\r\n</body>\r\n</html>\r\n' }
хм, отако зробив, наче норм
const request = require('request');
const cheerio = require('cheerio');
const fs = require('fs');
const writeStream = fs.createWriteStream('./result.json');
let maxIdent = 0;
function parsePage(url, selector, identation = 1, prefix = '') {
if (identation > maxIdent) maxIdent = identation;
request.get(url, { tymeout: 15000 }, (error, response, body) => {
if (!error && response.statusCode === 200) {
const $ = cheerio.load(body);
$(selector).each((index, elem) => {
const link = $(elem).prop('href');
let resultString = '';
for (let i = 0; i < identation; i++) {
resultString += ' ';
}
writeStream.write(
`${resultString}${prefix}${prefix ? '.' : ''}${index}. ${$(
elem
).text()}\n`,
error => console.error(`write stream error`, error)
);
if (link) {
parsePage(link, '.item-subject .hn a', identation + 1, index + 1);
} else {
console.error(`link is `, link);
}
});
} else {
if (error && error.code === 'ETIMEDOUT') {
console.error(`error`, error);
setTimeout(
() => parsePage(url, selector, (identation = 1), prefix),
5000
);
}
}
});
}
parsePage('http://replace.org.ua/', '.item-subject .hn a', 1);
це воно витягує назви категорій і підкатегорій, рекурсивно.
Тільки от проблема в тому, що це все робиться асинхронно, і тому в файл записується як-небудь
А яка тут асинхронність може бути? У вас же один запит йде до html сторінки. А далі один воркер працює) Ну я принаймі так робив
асинхронність, то коли відразу декілька запитів підряд відправляються, і ніхто не чекає, доки прийде відповідь від серверу на перший запит, аби розпочати наступний запит
Колись говорив, що займуся розробкою українського донат сервісу.
Ось, що зараз маю.
Але біда, немає досвіду фронтенд розробки. Мо хто має бажання допомогти з двома простими макетами:
макет сторінки подяк, котра на анімації
макет сповіщення про дяку
Дизайнерами будуть самі користувачі, зара тре продумати ці два макети, котрими користувачі будуть користуватися до певного часу. Гадаю пізніше кожен зможе робити власні макети.
Як видно на картинці нижче, у людей буде змога налаштувати макет. Ото тре всі ці штуки продумати зара.
Й людина котра фронтом трохи займалася, краще побачить де і як вставити {{ bacgroundColor }}, {{ headerSize }}
і т.д. і як ліпше зверстати макет.