Apify 网络爬虫任务不稳定。在间隔几分钟的运行之间获得不同的结果

Apify web scraper task not stable. Getting different results between runs minutes apart

我正在构建一个非常简单的抓取工具,以从我也喜欢听的在线广播电台获取 'now playing' 信息。

它存储在他们网站上的一个简单的 p 元素中: data html location

现在用的是标准apify/web-scraper我运行陷入了一个奇怪的问题。抓取有时有效,但有时不使用此代码:

async function pageFunction(context) {
    const { request, log, jQuery } = context;
    const $ = jQuery;
    const nowPlaying = $('p.js-playing-now').text();
    return {
        nowPlaying
    };
}

如果抓取工具有效,我会得到以下结果: [{"nowPlaying": "Hangover Hotline - hosted by Lamebrane"}]

但如果没有,我会得到这个: [{"nowPlaying": ""}]

而且两次刮擦之间仅相差 5 分钟。网站没有变化,数据始终以相同的方式呈现。我尝试选中所有复选框以规避安全性和不同的选项组合(使用 Chrome、使用隐身、忽略 SSL 错误、忽略 CORS 和 CSP),但不幸的是,这似乎无法解决问题。 Scraping instable

关于如何让这个抓取任务不断地return我需要的数据有什么建议吗?

如果能附上URL就好了,有助于我找出问题

根据你提供的信息,我猜想你要的数据是异步加载的。您可以使用 context.waitFor() 函数。

async function pageFunction(context) {
    const { request, log, jQuery } = context;
    const $ = jQuery;
    await context.waitFor(() => !!$('p.js-playing-now').text());
    const nowPlaying = $('p.js-playing-now').text();
    return {
        nowPlaying
    };
}

你可以把函数传给wait,我会一直等到函数结果为真。您可以查看 doc.