Javascript 与木偶师擦肩而过
我正在尝试创建一个需要用户提供URL的节点应用程序,然后将URL传递到Javascript 与木偶师擦肩而过,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我正在尝试创建一个需要用户提供URL的节点应用程序,然后将URL传递到scrape.js,并使用puppeter,刮取某些字段,然后以json格式将数据传递回app.js(这样我就可以将其转换为文档)。但我收到的是整个ServerResponse,而不是我想要的json格式的数据 我希望有更多经验的人能给我一些启示。以下是我到目前为止的情况: // app.js const scrape = require('./scrape'); const router = express.Router(
scrape.js
,并使用puppeter,刮取某些字段,然后以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
正在导出scrapeData
函数。在该函数中,您声明了一个scrapedata
变量,这是不同的
您在此处放置:
console.dir(scrapeData)-成功记录数据。
加
这应该可以解决您的问题。您有命名问题
scrape.js
正在导出scrapeData
函数。在该函数中,您声明了一个scrapedata
变量,这是不同的
您在此处放置:
console.dir(scrapeData)-成功记录数据。
加
这应该可以解决您的问题。由于缩进,很难理解。但是有没有可能
scrapeData
函数没有返回任何内容?@hardkoded,谢谢你的回复!我可以通过控制台将scrapeData记录在scrape.js
中来验证它是否返回数据。等一下,我来看看我能不能给沙盒编码一个例子!lmao,没关系-直到你不能在codesandbox上使用木偶演员。因为缩进,很难理解。但是有没有可能scrapeData
函数没有返回任何内容?@hardkoded,谢谢你的回复!我可以通过控制台将scrapeData记录在scrape.js
中来验证它是否返回数据。等一下,我来看看我能不能给沙盒编码一个例子!洛芒,没关系-直到你不能在暗箱里使用木偶演员。
// 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
return scrapeData;