从 URL 加载网页作为 html 以使用 Firebase 函数构建价格跟踪器
Posted
技术标签:
【中文标题】从 URL 加载网页作为 html 以使用 Firebase 函数构建价格跟踪器【英文标题】:Loading a webpage from a URL as an html to build a price tracker using Firebase Functions 【发布时间】:2020-09-25 16:27:14 【问题描述】:首先我对这种类型的开发非常陌生
我正在尝试使用 firebase 云功能构建价格跟踪器以从网页进行跟踪
假设我想跟踪这个产品: https://www.jarir.com/sa-en/apple-magic-keyboard-mouse-combo-547294.html
-
如何使用 typeScript lang 在我的云函数项目中加载此页面并将其作为 html 或字符串保存在
const
中?
这是我使用pubsub
每 30 分钟触发一次此事件:
import * as functions from 'firebase-functions';
import admin = require('firebase-admin');
export const priceTracker = functions.pubsub.schedule('every 30 minutes')
.onRun(async(context) =>
// 1- How to load this page: https://www.jarir.com/sa-en/apple-magic-keyboard-mouse-combo-547294.html
// and save it in a `const` as an html or string
// 2- How to extract the price from the html const and save the result into my firestore database
);
提前谢谢????
【问题讨论】:
您需要使用 node.js 库,它允许您进行一些网页抓取,然后分析页面以提取所需的数据。请参阅此博客文章,它可能会对您有所帮助:levelup.gitconnected.com/web-scraping-with-node-js-c93dcf76fe2b。此外,请注意您需要使用“Blaze”定价计划。事实上,免费的“Spark”计划“只允许向 Google 拥有的服务发出出站网络请求”。请参阅firebase.google.com/pricing(将鼠标悬停在“云功能”标题后面的问号上) 【参考方案1】:这确实是一个广泛的话题,很难在 Stack Overflow 的答案中完全回答。我要做的是帮助您将其分解为更小的步骤,并为这些步骤提供链接。
在所有这些中,意识到这一点确实很有帮助:
-
Cloud Functions 大部分只是由 Google 机器管理的小型节点模块。因此,如果您想在 Cloud Functions 中执行某些操作,请考虑如何在 Node.js 中执行。
Node.js 实际上只是在服务器上运行的 javascript。因此,如果您想在 Node.js 中做一些事情,请考虑如何在“普通旧 JavaScript”中进行。
考虑到这一点:
将 HTML 页面从 URL 加载到 Cloud Functions 代码中
搜索Loading a HTML page from a URL in Node.js 似乎有一些不错的结果,包括Get URL Contents in Node.js with Express。
在 HTML 中查找价格归结为解析该 HTML。这个链接似乎是一个很好的起点:Extracting table value from an URL with Node JS,搜索Parsing a HTML page from a URL in Node.js可以获得更多好的结果
最后:按照adding data to the database 上的文档,将生成的 HTML 或值存储到 Firestore 中应该相当简单。
【讨论】:
以上是关于从 URL 加载网页作为 html 以使用 Firebase 函数构建价格跟踪器的主要内容,如果未能解决你的问题,请参考以下文章
当我使用完整的图像图像路径尝试它时,网页上没有显示 HTML 图像,使用图像的 url 作为图像源没有问题
从 IPersistMoniker 加载 HTML 以将基本 URL 添加到相关链接