【问题标题】:Default Dataset not found, if APIFY_DEFAULT_DATASET_ID is set未找到默认数据集,如果设置了 APIFY_DEFAULT_DATASET_ID
【发布时间】:2023-03-19 05:22:02
【问题描述】:

Apify 文档enter link description here 解释说,可以通过设置环境变量 APIFY_DEFAULT_DATASET_ID 来命名默认数据集。如果我这样做,在创建 puppeteer-crawler 之前使用代码示例 1(见下文),如果我抓取页面并使用代码示例 2 存储结果,我会得到一个 Dataset-not-found-exception

我的代码有什么问题? 干杯 Wulfgäääng

// 代码示例1:设置默认数据集id

process.env.APIFY_DEFAULT_DATASET_ID = datasetName;

const crawler = new Apify.PuppeteerCrawler({ ...

// 代码示例2:存储结果

log.info(`APIFY_DEFAULT_DATASET_ID: ${process.env.APIFY_DEFAULT_DATASET_ID}`);
const _env = Apify.getEnv();
log.info(`Apify.getEnv().defaultDatasetId:  ${_env.defaultDatasetId}`);
try{
    await Apify.pushData(_result);
} catch(err){
    console.log(`Error pushData: ${err.message}`);
}

【问题讨论】:

    标签: apify


    【解决方案1】:

    你是对的,代码可以在你的本地环境中运行,但不能在 Apify 平台上运行。

    您需要将 Apify 平台上现有数据集的 ID/名称设置为 APIFY_DEFAULT_DATASET_ID。 如果你想在你的 actor 代码中创建或使用命名数据集,我建议使用 Apify.openDataset() 函数。它将为您的演员运行使用或创建一个数据集。有一个例子:

    const Apify = require('apify');
    
    Apify.main(async () => {
        const namedDataset = await Apify.openDataset('my-dataset-name');
        console.dir(namedDataset);
        await namedDataset.pushData({test:"foo bar"});
    });
    

    它会在本地和平台上一样工作。

    【讨论】:

      猜你喜欢
      • 2016-09-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 2020-03-19
      相关资源
      最近更新 更多