Javascript Apify web刮板任务不稳定。在相隔几分钟的跑步之间获得不同的结果

Javascript Apify web刮板任务不稳定。在相隔几分钟的跑步之间获得不同的结果,javascript,web-scraping,apify,Javascript,Web Scraping,Apify,我正在建立一个非常简单的刮板,从一个我也喜欢听的在线电台获取“正在播放”的信息 它存储在他们站点上的一个简单的p元素中: 现在使用标准的apify/web刮板,我遇到了一个奇怪的问题。刮削有时有效,但有时不使用以下代码: 异步函数页面函数(上下文){ const{request,log,jQuery}=context; const$=jQuery; const nowPlaying=$('p.js-playing-now').text(); 返回{ 正在播放 }; } 如果刮刀工作,我会得到

我正在建立一个非常简单的刮板,从一个我也喜欢听的在线电台获取“正在播放”的信息

它存储在他们站点上的一个简单的p元素中:

现在使用标准的apify/web刮板,我遇到了一个奇怪的问题。刮削有时有效,但有时不使用以下代码:

异步函数页面函数(上下文){ const{request,log,jQuery}=context; const$=jQuery; const nowPlaying=$('p.js-playing-now').text(); 返回{ 正在播放 }; } 如果刮刀工作,我会得到以下结果:
[{“nowPlaying”:“宿醉热线-由Lamebrane主持”}]

但如果没有,我会得到这个:
[{“正在播放”:“}]

两次擦伤之间只有5分钟的差别。网站不会改变,数据总是以相同的方式呈现。我尝试检查所有的框来规避安全性和不同的选项组合(使用Chrome、使用隐形、忽略SSL错误、忽略CORS和CSP),但不幸的是,这似乎无法解决问题。


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

如果你能附上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,我将等待函数的结果为true。您可以查看。

没问题,很乐意帮助!