我正在构建一个亚马逊价格跟踪器,并使用node.js和模块nightmare
进行网页抓取。
这是我想从亚马逊页面抓取信息:https://www.amazon.in//dp/B0BDKD8DVD/
我的代码只是返回一个NULL值,而不是返回产品的价格。
这是我的app.js
代码
const express = require("express")
const parser = require("./parser")
const app = express();
app.listen(3000, () => {
console.log("listening on port 3000")
})
app.get("/", (req, res) => {
const ans = parser();
res.send(ans)
})
这是我的parser.js
代码
const nightmare = require("nightmare")();
async function checkprice() {
const priceString = await nightmare
.goto("https://www.amazon.in/Apple-AirPods-Pro-2nd-Generation/dp/B0BDKD8DVD/ref=sr_1_5")
.wait(".a-offscreen")
.evaluate(() => document.getElementsByClassName("a-price-whole").innerText)
.end
const priceNumber = parseFloat(priceString)
console.log(priceNumber)
return priceNumber
};
module.exports = checkprice;
这是返回NaN而不是price。任何建议都可能很有帮助。谢谢你。
1条答案
按热度按时间au9on6nz1#
你的元素返回Undefined
document.getElementsByClassName("a-price-whole").innerText
正确的应该是
document.getElementsByClassName("a-price-whole")[0].innerText
请注意,他们的6个div与这个类名和返回新行
'26,600\n.'