在单独的 js 文件中从异步函数导出结果,在另一个 javascript 中导入结果
Exporting result from async function in separate js file, importing result in another javascript
正在尝试构建一个小型爬虫。要重用功能,我认为 'Page Object Models' 会派上用场。
在 main.js 中,我需要多个小脚本,在下面的示例中只有一个模型 (GooglePage)。
脚本工作。但我想知道如何将 google.js 脚本中的值传递回主脚本。
我想在 main.js 脚本中使用 'pageCountClean' 变量的值以在应用程序的其余部分中使用。
一直在搜索有关在脚本之间传递值和函数的信息。用于从 pageconstructors 导出值,用于 promise await 导出函数。
但是我迷路了。我必须使用 Promises 吗?当前 require/importing 和导出的方式是否足以创建脚本之间的关系?
欢迎任何指点。
//////////// main.js
const { chromium } = require('playwright');
const { GooglePage } = require('./models/Google');
(async () => {
const browser = await chromium.launch({ headless: true, slowMo: 250 });
const context = await browser.newContext();
const GoogleUrl80 = https://www.google.nl/search?q=site%3Anu.nl;
// Cookie consent:
console.log('Cookie consent - start');
const page80 = await browser.newPage();
await page80.goto('https://google.nl');
await page80.waitForTimeout(1000);
await page80.keyboard.press('Tab');
await page80.keyboard.press('Tab');
await page80.keyboard.press('Enter');
console.log('Cookie Consent - done');
// Number of urls in google.nl (using google.js)
await page80.goto(GoogleUrl80, {waitUntil: 'networkidle'});
const googlePage80 = new GooglePage(page80);
await googlePage80.scrapeGoogle();
// Want to console.log 'pageCountClean' here.
await browser.close()
})()
//////////// Google.js
class GooglePage {
constructor(page) {
this.page = page;
}
async scrapeGoogle() {
const GoogleXpath = '//div[@id="result-stats"]';
const pageCount = await this.page.$eval(GoogleXpath, (el) => el.innerText);
const pageCountClean = pageCount.split(" ")[1];
console.log(pageCountClean);
}
}
module.exports = { GooglePage };
您可以 return pageCountClean
从您的 async
函数中 await
它在您的 main.js 文件中:
在Google.js中:
async scrapeGoogle() {
const GoogleXpath = '//div[@id="result-stats"]';
const pageCount = await this.page.$eval(GoogleXpath, (el) => el.innerText);
const pageCountClean = pageCount.split(" ")[1];
console.log(pageCountClean);
return pageCountClean;
}
在main.js中:
const googlePage80 = new GooglePage(page80);
const result = await googlePage80.scrapeGoogle();
console.log(result);
正在尝试构建一个小型爬虫。要重用功能,我认为 'Page Object Models' 会派上用场。
在 main.js 中,我需要多个小脚本,在下面的示例中只有一个模型 (GooglePage)。 脚本工作。但我想知道如何将 google.js 脚本中的值传递回主脚本。 我想在 main.js 脚本中使用 'pageCountClean' 变量的值以在应用程序的其余部分中使用。
一直在搜索有关在脚本之间传递值和函数的信息。用于从 pageconstructors 导出值,用于 promise await 导出函数。 但是我迷路了。我必须使用 Promises 吗?当前 require/importing 和导出的方式是否足以创建脚本之间的关系? 欢迎任何指点。
//////////// main.js
const { chromium } = require('playwright');
const { GooglePage } = require('./models/Google');
(async () => {
const browser = await chromium.launch({ headless: true, slowMo: 250 });
const context = await browser.newContext();
const GoogleUrl80 = https://www.google.nl/search?q=site%3Anu.nl;
// Cookie consent:
console.log('Cookie consent - start');
const page80 = await browser.newPage();
await page80.goto('https://google.nl');
await page80.waitForTimeout(1000);
await page80.keyboard.press('Tab');
await page80.keyboard.press('Tab');
await page80.keyboard.press('Enter');
console.log('Cookie Consent - done');
// Number of urls in google.nl (using google.js)
await page80.goto(GoogleUrl80, {waitUntil: 'networkidle'});
const googlePage80 = new GooglePage(page80);
await googlePage80.scrapeGoogle();
// Want to console.log 'pageCountClean' here.
await browser.close()
})()
//////////// Google.js
class GooglePage {
constructor(page) {
this.page = page;
}
async scrapeGoogle() {
const GoogleXpath = '//div[@id="result-stats"]';
const pageCount = await this.page.$eval(GoogleXpath, (el) => el.innerText);
const pageCountClean = pageCount.split(" ")[1];
console.log(pageCountClean);
}
}
module.exports = { GooglePage };
您可以 return pageCountClean
从您的 async
函数中 await
它在您的 main.js 文件中:
在Google.js中:
async scrapeGoogle() {
const GoogleXpath = '//div[@id="result-stats"]';
const pageCount = await this.page.$eval(GoogleXpath, (el) => el.innerText);
const pageCountClean = pageCount.split(" ")[1];
console.log(pageCountClean);
return pageCountClean;
}
在main.js中:
const googlePage80 = new GooglePage(page80);
const result = await googlePage80.scrapeGoogle();
console.log(result);