Node.js | Парсинг сайта
Серега , Ошибка парсинга данных: Failed to launch the browser process!
/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 не удалась: Не удалось получить данные с сайта.
Ошибка парсинга данных: Не удалось получить данные с сайта.
/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 не удалась: Не удалось получить данные с сайта.
Ошибка парсинга данных: Не удалось получить данные с сайта.
sudo apt-get install -y libnss3 libatk-bridge2.0-0 libatk1.0-0 libcups2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libxss1 libxtst6 libnss3-tools
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 - timeout of 30000ms exceeded
Не удалось получить данные через прокси 202.179.184.66:8080, пробую следующий...
Ошибка парсинга данных: Не удалось получить данные с сайта через все доступные прокси.
Не удалось получить данные через прокси 202.179.184.66:8080, пробую следующий...
Ошибка парсинга данных: Не удалось получить данные с сайта через все доступные прокси.
Стр.: 1, 2