Node.js | Парсинг сайта
/root/.cache/puppeteer/chrome/linux-127.0.6533.88/chrome-linux64/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://pptr.dev/troubleshooting
Ошибка отправки сообщения: Не удалось разобрать данные с сайта.
а это со второго кода ошибка
Ошибка получения данных: port is not defined
Попытка 1 не удалась: Не удалось получить данные с сайта.
Ошибка получения данных: port is not defined
Попытка 2 не удалась: Не удалось получить данные с сайта.
Ошибка получения данных: port is not defined
Попытка 3 не удалась: Не удалось получить данные с сайта.
Ошибка парсинга данных: Не удалось получить данные с сайта.
javascript
sudo apt-get install -y libnss3 libatk-bridge2.0-0 libatk1.0-0 libcups2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libxss1 libxtst6 libnss3-tools javascript
const axios = require('axios'); const cheerio = require('cheerio'); const TelegramBot = require('node-telegram-bot-api'); const puppeteer = require('puppeteer'); const { token } = require('./key'); // Создаем экземпляр Telegram бота const bot = new TelegramBot(token, { polling: true }); // URL сайта, который будем парсить const url = 'https://trendcore.ru/'; // Замените на фактический URL // Прокси сервер const proxy = { host: 'your-proxy-server', // Замените на ваш прокси сервер port: 1234 // Замените на порт вашего прокси }; // Настройки заголовков const headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 'Accept-Language': 'en-US,en;q=0.9', }; // Функция для получения данных с сайта через прокси async function fetchData() { try { const response = await axios.get(url, { headers, proxy, timeout: 30000 // Таймаут 30 секунд }); return response.data; } catch (error) { console.error(`Ошибка получения данных: ${error.message}`); throw new Error('Не удалось получить данные с сайта.'); } } // Функция для получения данных с повторными попытками async function fetchDataWithRetry(retries = 3) { for (let attempt = 1; attempt <= retries; attempt++) { try { return await fetchData(); } catch (error) { console.error(`Попытка ${attempt} не удалась: ${error.message}`); if (attempt === retries) throw error; await new Promise(resolve => setTimeout(resolve, 2000)); // Ожидание 2 секунды перед повторной попыткой } } } // Функция для парсинга таблицы async function parseTable() { try { const html = await fetchDataWithRetry(); const $ = cheerio.load(html); const result = []; $('table tr').each((_, element) => { const cells = $(element).find('td'); if (cells.length >= 2) { const coin = $(cells[0]).text().trim(); const level = $(cells[1]).text().trim(); if (coin && level) { result.push({ coin, level }); } } }); if (result.length === 0) { console.warn('Таблица не содержит данных.'); } return result; } catch (error) { console.error(`Ошибка парсинга данных: ${error.message}`); throw new Error('Не удалось разобрать данные с сайта.'); } } // Функция для отправки сообщений async function sendMessage(chatId, message) { try { await bot.sendMessage(chatId, message); } catch (error) { console.error(`Ошибка отправки сообщения: ${error.message}`); } } // Команда для вывода таблицы bot.onText(/\/table/, async (msg) => { const chatId = msg.chat.id; try { const data = await parseTable(); if (data.length > 0) { let message = 'Монета | До уровня, %\n'; message += '----------------------\n'; data.forEach(item => { message += `${item.coin} | ${item.level}\n`; }); await sendMessage(chatId, message); } else { await sendMessage(chatId, 'Таблица пуста или данные не найдены.'); } } catch (error) { await sendMessage(chatId, 'Произошла ошибка при получении данных. Попробуйте позже.'); } }); Не удалось получить данные через прокси 202.179.184.66:8080, пробую следующий...
Ошибка парсинга данных: Не удалось получить данные с сайта через все доступные прокси.
Стр.: 1, 2