在单独的 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);