0

Apify 文档在此处输入链接描述解释说,可以通过设置环境变量 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}`);
}
4

1 回答 1

0

您是对的,代码将在您的本地环境中运行,但不适用于 Apify 平台。

您需要将 Apify 平台上现有数据集的 ID/名称设置为 APIFY_DEFAULT_DATASET_ID。如果您想在您的演员代码中创建或使用命名数据集,我建议使用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"});
});

它将与在平台上一样在本地工作。

于 2019-10-21T09:50:20.280 回答