Как получить доступ к выбранным элементам, например название, описание, дата из RSS-ленты? - PullRequest
0 голосов
/ 05 апреля 2019

Я делаю это для целей обучения. У меня есть URL в RSS-канал, который я хотел бы работать дальше. Этот канал содержит слишком много информации. Меня интересуют только все «item», их «title», «description» и «pubDate». Я использую «firebase deploy --only functions», а затем проверяю URL для развертывания, где я ожидаю увидеть очищенные данные. По какой-то причине я получаю сообщение об ошибке в журналах облачных функций: "Ошибка типа: невозможно прочитать свойство 'канал' из неопределенного при чистке (/user_code/lib/index.js:19:29)"

Я попробовал это с другим URL, который удивительно работал: https://www.theguardian.com/uk/london/rss

Вот URL для RSS-канала, который я хочу использовать: https://polisen.se/aktuellt/rss/hela-landet/handelser-i-hela-landet/

Вот моя функция очистки:

function cleanUp(data) {

    const items = []
    const channel = data.rss.channel
    channel.item.forEach(element => {
        items.push({
            title: element.title,
            description: element.description,
            date: element.pubDate
        })
    });
    return items
}

Я ожидаю увидеть все элементы с дочерними заголовком, описанием и публикацией после развертывания. Вместо этого я получаю «Ошибка: не удалось обработать запрос», и когда я проверяю свои журналы в облачных функциях Google, я вижу:

"TypeError: Невозможно прочитать свойство 'channel' из неопределенного при чистке (/user_code/lib/index.js:19:29)"

1 Ответ

0 голосов
/ 05 апреля 2019

Для этого я бы рекомендовал работать с объектами JSON.Так что я сделал, чтобы получить RSS-канал и преобразовать его в объект JSON.Затем анализируйте элемент за элементом и регистрируйте необходимые данные.

Я немного расшифровал код самого себя.Следуйте приведенным ниже инструкциям, чтобы получить представление о моем примере, а затем измените код в соответствии с вашими потребностями:

  1. Создание новой облачной функции Google
  2. Триггер: HTTP
  3. Время выполнения: Node.js 8
  4. Добавление зависимостей в package.json :
{
  "name": "sample-http",
  "version": "0.0.1",
   "dependencies": {
    "rss-to-json": "^1.0.4"
  }
}
В index.js замените код на мой код GitHub пример.

Я проверил код самостоятельно и зарегистрировал 200 элементов, используяссылка, которую вы предоставили.В основном я беру RSS и преобразовываю его в объект JSON.Затем я перебираю все элементы и регистрирую свойства каждого элемента.

...