@probuyu

Как обновить страницу перед считыванием информации?

Идет запрос информации с сайта при помощи бота. 3 раза в сутки (строго по часам) идет обновление информации на сайте. Структура сайта:
<a href="#" class="newsletter"><img src="" alt="" class="small">
	<noindex>
		<span>Новости от 8 часов</span>
	</noindex>
	</a>

В заданные моменты идет считывание информации, но он фиксирует информацию каждое считывание от момента запуска бота, она не меняется, даже если на сайте ее обновят. и в 15ч он пишет ту же информацию, что и в 8 утра. Информация на сайте обновляется ровно в 08:00, далее в 15:00

const request = require('request-promise');
const cheerio = require('cheerio');

client.on("ready", () => {
   const url = '';

   async function news() {
      const letter = await request(url);
      const $ = cheerio.load(letter);

      cron.schedule('0 5 8 * * *', () => {
         $('.newsletter noindex span')
            .each((index, element) => {
               const exp = $(element).text();
               client.channels.cache.get("").send(exp));
            })
      });
		cron.schedule('0 5 15 * * *', () => {
         $('.newsletter noindex span')
            .each((index, element) => {
               const exp = $(element).text();
               client.channels.cache.get("").send(exp));
            })
      });
   }
   news();
});


Как обновлять страницу перед считыванием
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@5465
Вы можете использовать функцию setInterval для обновления страницы перед считыванием информации. В этом случае, страница будет обновляться каждые несколько минут, что позволит вашему боту получать актуальную информацию.

Например, вы можете изменить ваш код следующим образом:

const request = require('request-promise');
const cheerio = require('cheerio');

client.on("ready", () => {
const url = '';

async function news() {
const letter = await request(url);
let $ = cheerio.load(letter);


  // Создаем функцию, которая будет обновлять страницу и получать новую информацию
  function updatePage() {
     request(url)
        .then((html) => {
           $ = cheerio.load(html);
           $('.newsletter noindex span').each((index, element) => {
              const exp = $(element).text();
              client.channels.cache.get("").send(exp);
           })
        })
        .catch((err) => {
           console.log(err);
        });
  }

  // Вызываем функцию updatePage каждые 5 минут
  setInterval(updatePage, 5 * 60 * 1000);
}
news();
});


В этом примере, функция updatePage будет вызываться каждые 5 минут и будет обновлять страницу, чтобы получить актуальную информацию. Вы можете изменить интервал обновления на свое усмотрение, чтобы получать информацию точно в нужный момент времени.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы