gpt4 book ai didi

javascript - 使用 puppeteer 进行抓取并返回 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:46 26 4
gpt4 key购买 nike

我正在尝试创建一个需要用户提供 URL 的 Node 应用程序,然后将该 URL 传递到 scrape.js 并使用 puppeteer,抓取某些字段,然后将数据以 json 格式传递回 app.js (这样我就可以将其转换为文档)。但我收到的是整个 ServerResponse,而不是我想要的 json 格式的数据。

我希望有更多经验的人可以提供一些启发。这是我到目前为止所拥有的:

// app.js

const scrape = require('./scrape');
const router = express.Router();

router.get( '/', ( req, res ) => {
const url = req.body.url;

const item = new Promise((resolve, reject) => {
scrape
.scrapeData()
.then((data) => res.json(data))
.catch(err => reject('Scraping failed...'))
})
});
// scrape.js

const puppeteer = require('puppeteer');

const scrapeData = async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.setViewport({ width: 360, height: 640 });
await page.goto(url);

let scrapedData = await page.evaluate(() => {
let scrapedDetails = [];

let elements = document.querySelectorAll('#a-page');

elements.forEach(element => {
let detailsJson = {};

try {
detailsJson.title = element.querySelector('h1#title').innerText;
detailsJson.desc = element.querySelector('#description_box').innerText;
} catch (exception) {}

scrapedDetails.push(detailsJson);
});

return scrapedDetails;
}));

// console.dir(scrapeData) - logs the data successfully.

};

module.exports.scrapeData = scrapeData

最佳答案

您遇到命名问题。 scrape.js 正在导出 scrapeData 函数。在该函数内,您声明了一个 scrapedData 变量,这不是同一件事。

你放置的位置:

console.dir(scrapeData) - logs the data successfully.

添加

return scrapeData;

这应该可以解决您的问题。

关于javascript - 使用 puppeteer 进行抓取并返回 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57562915/

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