如何使用firebase函数解析给定网站并将数据插入firebase?

如何使用firebase函数解析给定网站并将数据插入firebase?,firebase,parsing,firebase-realtime-database,web,google-cloud-functions,Firebase,Parsing,Firebase Realtime Database,Web,Google Cloud Functions,我们是否可以在firebase上编写函数,每小时触发一次,将给定网站的页面解析为xml并将数据插入firebase数据库? 如果可能的话,如何做到这一点(一些小的帮助将对我非常有帮助) 提前谢谢 是的,你能行。使用cron触发函数。在该功能中,您将具有从网站获取数据并将其保存在数据库中的逻辑。是的,您可以这样做。使用cron触发函数。在该功能中,您将具有从网站获取数据并将其保存在数据库中的逻辑。对于发现类似问题的其他人: lgvalle发布了一个有用的要点,介绍了如何在云功能中抓取网站: con

我们是否可以在firebase上编写函数,每小时触发一次,将给定网站的页面解析为xml并将数据插入firebase数据库? 如果可能的话,如何做到这一点(一些小的帮助将对我非常有帮助)


提前谢谢

是的,你能行。使用cron触发函数。在该功能中,您将具有从网站获取数据并将其保存在数据库中的逻辑。

是的,您可以这样做。使用cron触发函数。在该功能中,您将具有从网站获取数据并将其保存在数据库中的逻辑。

对于发现类似问题的其他人:

lgvalle发布了一个有用的要点,介绍了如何在云功能中抓取网站:

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

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

const db = admin.firestore();

exports.allyPallyFarmersMarket = functions.https.onRequest((request, response) => {
    const topic = "allyPallyFarmersMarket"
    const url = 'https://weareccfm.com/city-country-farmers-markets/market-profiles/alexandra-palace-market/'
    const options = {
        uri: url,
        headers: { 'User-Agent': 'test' },
        transform: (body) => cheerio.load(body)
    }    
    rp(options)
        .then(($) => {
            const scrap = $('strong').text()
            const [location, date, address] = scrap.split("–")

            //EDIT BY neogucky: 
            //Here you can access scrapped vars: location, date, address
        })
        .catch((err) => response.status(400).send(err))
});

添加所需的依赖项,您的package.json应该如下所示:

"dependencies": {
    "firebase-admin": "~6.0.0",
    "firebase-functions": "^2.0.3",
    "request-promise": "~4.2.2",
    "cheerio": "~0.22.0"
},
如果在请求中发送JSON数据{网站:'},则可以通过以下方式访问:

request.body.website

对于发现类似问题的其他人:

lgvalle发布了一个有用的要点,介绍了如何在云功能中抓取网站:

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

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

const db = admin.firestore();

exports.allyPallyFarmersMarket = functions.https.onRequest((request, response) => {
    const topic = "allyPallyFarmersMarket"
    const url = 'https://weareccfm.com/city-country-farmers-markets/market-profiles/alexandra-palace-market/'
    const options = {
        uri: url,
        headers: { 'User-Agent': 'test' },
        transform: (body) => cheerio.load(body)
    }    
    rp(options)
        .then(($) => {
            const scrap = $('strong').text()
            const [location, date, address] = scrap.split("–")

            //EDIT BY neogucky: 
            //Here you can access scrapped vars: location, date, address
        })
        .catch((err) => response.status(400).send(err))
});

添加所需的依赖项,您的package.json应该如下所示:

"dependencies": {
    "firebase-admin": "~6.0.0",
    "firebase-functions": "^2.0.3",
    "request-promise": "~4.2.2",
    "cheerio": "~0.22.0"
},
如果在请求中发送JSON数据{网站:'},则可以通过以下方式访问:

request.body.website

你好,钱德里卡!你能(详细地)给我写一些这个函数的代码吗?因为我不擅长java脚本,我找不到关于如何使用firebase在java脚本中解析的信息。我还没有做过确切的案例。我使用了外部cron来调用该服务<代码>https://cron-job.org/en/我有一个前端,我上传电子表格并对其进行解析,然后将数据保存到firebase。你好,钱德里卡!你能(详细地)给我写一些这个函数的代码吗?因为我不擅长java脚本,我找不到关于如何使用firebase在java脚本中解析的信息。我还没有做过确切的案例。我使用了外部cron来调用该服务<代码>https://cron-job.org/en/我有一个前端,我上传电子表格并对其进行解析,然后将数据保存到firebase。这听起来都是可能的。但现在你的问题太广泛,无法回答堆栈溢出问题。由于您的问题有三个步骤(使用Node.js从网站读取数据、将数据插入Firebase数据库、在Cloud Functons上运行Node.js代码),因此我建议您从第一个步骤开始,并在遇到问题时使用一个返回。感谢Frank为我提供指导。这一切听起来都是可能的。但现在你的问题太广泛,无法回答堆栈溢出问题。由于您的问题有三个步骤(使用Node.js从网站读取数据、将数据插入Firebase数据库、在Cloud Functons上运行Node.js代码),因此我建议您从第一个步骤开始,并在遇到问题时使用一个返回。感谢Frank为我提供指导。