gpt4 book ai didi

javascript - NightmareJS(电子浏览器)是否兼容Firebase函数?

转载 作者:行者123 更新时间:2023-12-03 13:23:38 25 4
gpt4 key购买 nike

我有一个应用程序,该应用程序使用“纽约时报”食谱网址,并将食材 list 转换为购物待办事项 list 。

由于《纽约时报》使用React,因此无法通过标准抓取方式获得任何数据-index.html大部分为空白。我必须使用像NightmareJS这样的库,该库使用Electron浏览器完全构建DOM(包括Javascript),以便随后可以为数据抓取该DOM。

但这似乎不起作用。这是我包含在/functions/index.js文件中的代码:

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions')

// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)

const Nightmare = require('nightmare')
const Actions = require('nightmare-react-utils').Actions

exports.listify = functions.https.onRequest((req, res) => {

console.log("YOU ARE NOW INSIDE THE LISTIFY FUNCTION!")

Nightmare.action(...Actions)
const nightmare = new Nightmare({ show: false })
const selector = 'ul.recipe-ingredients'
const queryUrl = req.query.url
nightmare
.goto(queryUrl)
.wait()
.evaluate((selector) => {

console.log("YOU ARE NOW INSIDE THE EVALUATE!")

const recipeIngredientsObject = document.querySelector(selector).children
const result = []

const ingredientKeys = Object.keys(recipeIngredientsObject)
ingredientKeys.forEach((key) => {
const ingredientObject = recipeIngredientsObject[key]
const quantityAndIngredient = ingredientObject.children
result.push({
"quantity": quantityAndIngredient[0].innerText,
"ingredient": quantityAndIngredient[1].innerText
})
})
return result
}, selector)
})

当我从前端调用此功能时,我在Firebase日志中看到第一个控制台日志-“您现在已位于列表功能中!” -但我看不到第二条消息:“您现在就在评估之内!”

我不能将NightmareJS与Firebase函数一起使用吗?

最佳答案

console.log消息将永远不会出现。当您运行评估时,该函数在 headless 浏览器的上下文中执行,因此不会登录到终端。

尝试类似...

.evaluate((selector) => {
return document.querySelector(selector)
}, selector)
.end()
.then(console.log)

看看它是否在工作。

关于javascript - NightmareJS(电子浏览器)是否兼容Firebase函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47777157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com