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