如何访问选定的元素,例如rss feed中的标题,描述,日期?

时间:2019-04-04 21:13:17

标签: javascript xml rss google-cloud-functions

我这样做是出于学习目的。我有要进一步工作的RSS feed的网址。此供稿包含太多信息。我只对所有“项目”,它们的“标题”,“描述”和“ pubDate”感兴趣。我正在使用“ firebase部署-仅功能”,然后在我希望看到已清理数据的地方检查url。由于某种原因,我在云函数日志中遇到错误:“ TypeError:无法读取未定义的属性'channel'     在cleanUp(/user_code/lib/index.js:19:29)“

我尝试了另一个工作出奇的网址:https://www.theguardian.com/uk/london/rss

这是我要使用的RSS feed的URL: 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 cloud函数中检查日志时,看到:

  

“ TypeError:无法读取未定义的属性'channel'       在cleanUp(/user_code/lib/index.js:19:29)“

1 个答案:

答案 0 :(得分:0)

为此,我建议使用JSON对象。所以我要做的是获取RSS feed并将其转换为JSON对象。然后逐项解析并记录所需的数据。

我做了一些自我编码。请按照以下步骤了解我的示例,然后根据需要修改代码:

  1. 创建新的Google Cloud Function
  2. 触发器: HTTP
  3. 运行时: Node.js 8
  4. package.json 中添加依赖项:
{
  "name": "sample-http",
  "version": "0.0.1",
   "dependencies": {
    "rss-to-json": "^1.0.4"
  }
}
  1. index.js 中,将代码替换为my GitHub code示例。

我已经对代码进行了自我测试,并使用您提供的链接记录了200个项目。基本上,我使用RSS并将其转换为JSON对象。然后,我遍历所有项目并记录每个项目的属性。