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

#javascript #arrays #web-scraping #axios #cheerio

Вопрос:

У меня есть множество обновлений новостей, поступающих с этого сайта здесь. То, что я ищу, — это console.log последние новостные статьи по мере их публикации или очень близко к моменту их публикации. С помощью моего кода я могу отправить запрос на получение статей, но я хочу знать, когда массив изменяется с новой записью.

 const axios = require('axios')
const cheerio = require('cheerio')
const express = require('express')
const PORT = 3000
const URL = 'https://www.newworld.com/en-us/news'
const splitURL = URL.slice(0, 24)

const app = express()

setInterval(() => {
    axios(URL)
    .then(response => {
        const html = response.data
        const $ = cheerio.load(html)
        const articles = []
        $('.ags-SlotModule', html).each(function(){
            const link = splitURL   $(this).find('a').attr('href')
            articles.push({
                link
            })
        })
        console.log(articles[0])
    }).catch(err => console.log(err))
}, PORT)

app.listen(PORT, () => console.log('server running'))
 

Кроме того, я не нашел никакого API или RSS-канала, который я мог бы использовать для получения обновлений.

Комментарии:

1. это меняется, когда вы это делаете articles.push , что тогда вы хотите с этим делать?

2. Ничего. Я хочу, чтобы это ничего не делало.

3. у каждой из статей есть URL-адрес, используйте его для идентификации страницы, затем просто создайте объект объектов, ключом которого является URL, тогда вы не получите дубликатов, а затем очистите данные, у каждого элемента есть дата, которую вы можете использовать для заказа и т. Д., Также есть этот URL newworld.com/en-us/news-load-more?page=1 которыйимеет только posts dom, если вы хотите где-то запустить событие, если что-то изменилось, создайте свой объект с помощью Object.defineProperty и в set испускает EventEmitter (или использует экспресс-события), хотя неясно, почему вы используете express

4. Передача значения PORT as с задержкой в миллисекунду setInterval может быть ошибкой.

5. Может быть. Может быть, нет.